Git语句

git config --global user.name "xxxx"
git config --global user.email "xxxx"

创建一个版本库:

$ mkdir learngit
$ cd learngit
$ pwd

/Users/michael/learngit 说明仓库位于此路径内

通过git init命令把这个目录变成Git可以管理的仓库

把一个文件放到Git仓库:
1.用命令git add告诉Git,把文件添加到仓库git add readme.txt
2.用命令git commit告诉Git,把文件提交到仓库git commit -m "wrote a readme file"

运行git status查看文件是否被修改 git status命令可以让我们时刻掌握仓库当前的状态
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
知道做了什么修改之后,再提交修改:
1.git add xxx
2.git commit -m "xxx版本名"

git log再看看现在版本库的状态

在Git中,用HEAD表示当前版本 使用git reset命令:$ git reset --hard HEAD^

查看文件内的内容 :cat xxxx

指定回到未来的某个版本:$ git reset --hard xxx版本号前几位
Git提供了一个命令git reflog用来记录你的每一次命令

10.20
stage暂存区 master分支

Git跟踪并管理的是修改,而非文件
多次修改步骤: 不要忘记使用git add将新修改的文件放到暂存区,然后一起提交
第一次修改 -> git add -> 第二次修改 -> git add -> git commit

撤销修改:
刚修改之后,未add:git checkout -- file可以丢弃工作区的修改
add后 :命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

删除文件:rm file 此时使用git status可以得知哪个文件被删除
从来没有被添加到版本库就被删除的文件,是无法恢复的!
两个选择1.确实要从版本库中删除:git rm file 并且提交git commit
2.点错了 恢复最新版本:git checkout -- file

创建一个新的分支 git checkout -b dev (约等于 git branch dev git checkout dev)
git branch命令查看当前分支 他会列出所有分支,当前分支前会标一个星号
可正常进行提交
切换回master分支: git checkout master
将dev分支的工作成果合并到master分支上:git merge dev
删除dev分支:git branch -d dev

切换分支还可使用 switch
创建并切换到新的dev:git switch -c dev
直接切换到已有的master分支:git switch master

10.21
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。 git log --graph --pretty=oneline --abbrev-commit

fast forward模式下,删除分支后会丢掉分支信息
使用–no-ff方式的git merge:git merge --no-ff -m "merge with no-ff" dev (∵要创建新的commit,所以加-m)
合并后的历史有分支,能看出来曾经做过合并

分支策略

bug分支解决流程:
git stash功能 暂时隐藏bug
git stash list 查看工作现场
解决bug
恢复stash内容:1、git stash apply 恢复后,stash内容并不删除,需要用git stash drop来删除
2、git stash pop,恢复的同时把stash内容也删了

恢复指定的stash,用命令:git stash apply stash@{0}
cherry-pick命令,让我们能复制一个特定的提交到当前分支 master的bug解决后,复制到dev

feature分支:每添加一个新功能都要新创建一个分支,完成后,合并,删除该分支
Git友情提醒,分支没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数。

远程仓库

git remote add origin git@github.com:michaelliao/learngit.git

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程
git push origin master 将本地master分支的最新修改推送至GitHub
git remote -v:查看远程库信息 git remote也可以
删除远程库 git remote rm
使用git clone克隆一个本地库git clone [email protected]:michaelliao/gitskills.git

推送分支:git push origin master
master是主分支,与远程同步
dev是开发分支 在此工作 也需同步
bug分支在本地修复bug
feature分支 看情况
抓取分支:共同推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突
:先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
设置dev和origin/dev的链接:git branch --set-upstream-to=origin/dev dev
再git pull
再push

因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
用命令git branch --set-upstream-to origin/

rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

git rebase

标签管理 默认标签是打在最新提交的commit上的
使用git tag v1.0 打新标签
git tag查看所有标签
对历史提交的id打标签 先git log。。。找到id,再git tag v0.9 id号
使用git show v标签 查看标签信息
创建带有说明的标签(-a指定标签名 -m指定说明文字):git tag -a v0.1 -m "version 0.1 released" 1094adb

删除标签:git tag -d v0.1
推送标签到远程: git push origin v1.0
一次性推送全部尚未推送到远程的本地标签:git push origin --tags
删除推送到远程的标签:1.删除本地2.删除远程git push origin :refs/tags/v0.9 远程是否删除成功需要github查看

在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限
让Git显示颜色,会让命令输出看起来更醒目:git config --global color.ui true

忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
要添加一个被.gitignore忽略的文件 强制添加git add -f App.class
git check-ignore -v App.class 若.gitignore有问题,检查哪个规则写错

配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
查看配置文件cat .git/config

你可能感兴趣的:(通用,git)