分支创建:
$ git branch testing
显示分支:
$ git branch
iss53
* master
testing 如果需要查看每一个分支的最后一次提交
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
--merged
与 --no-merged
这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。 如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged
:
$ git branch --merged
iss53
* master 查看所有包含未合并工作的分支
$ git branch --no-merged
testing
分支切换:
$ git checkout testing
如果在分支c1有修改且未提交前,切换分支c2,c2指向c1的当前状态(即有修改且未提交的状态),并且c1现场保存。从c2切换回c1后,c1现场恢复(即有修改且未提交的状态)。提交修改后,切换分支c2,c2的未提交状态(即有修改且未提交的状态)消除。
分支创建并切换:
$ git checkout -b iss53
Switched to a new branch "iss53"
显示分支情况:
git log --oneline --decorate --graph --all
删除分支:
$ git branch -d hotfix
Deleted branch hotfix (3a0874c).
强制删除:
$ git branch -D hotfix
三方合并:
master
分支所在提交并不是 iss53
分支所在提交的直接祖先。 出现这种情况的时候,Git 会使用两个分支的末端所指的快照(C4
和C5
)以及这两个分支的工作祖先(C2
),做一个简单的三方合并。
Git 将此次三方合并的结果做了一个新的快照并且自动创建一个新的提交指向它。 这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。Git 会自行决定选取哪一个提交作为最优的共同祖先,并以此作为合并的基础。
解决冲突:
$ git mergetool