1查看分支
1.1查看遠(yuǎn)程分支:
$ git branch -a
* br-2.1.2.2
master
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
1.2查看本地分支:
$ git branch
* br-2.1.2.2
master
2 合并分支逃糟、解決沖突
2.1如何分支的合并
在git中吼鱼,可以使用git merge 和git rebase兩個(gè)命令來進(jìn)行分支的合并。git merge 和git rebase在大體上都差不多绰咽,下文主要以git merge來例來講解分支的合并流程菇肃。如果你想了解分支合并的更多內(nèi)容,請(qǐng)閱讀《git merge簡(jiǎn)介》取募,《git rebase簡(jiǎn)介(基本篇)》和《git rebase簡(jiǎn)介(高級(jí)篇)》琐谤。
git merge命令示例:
$ git merge branchname
這個(gè)命令把分支"branchname"合并到了當(dāng)前分支里面。
如有沖突(沖突--同一個(gè)文件在遠(yuǎn)程分支和本地分支里按不同的方式被修改了)玩敏;那么命令的執(zhí)行輸出就像下面一樣
$ git merge next
100% (4/4) done
Auto-merged file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
在有問題的文件上會(huì)有沖突標(biāo)記斗忌,在你手動(dòng)解決完沖突后就可以把此文件添 加到索引(index)中去,用git commit命令來提交旺聚,就像平時(shí)修改了一個(gè)文件 一樣织阳。
如果你用gitk來查看commit的結(jié)果,你會(huì)看到它有兩個(gè)父分支:一個(gè)指向當(dāng)前的分支砰粹,另外一個(gè)指向剛才合并進(jìn)來的分支唧躲。
2.2解決合并中的沖突
如果執(zhí)行自動(dòng)合并沒有成功的話,git會(huì)在索引和工作樹里設(shè)置一個(gè)特殊的狀態(tài)碱璃, 提示你如何解決合并中出現(xiàn)的沖突弄痹。
有沖突(conflicts)的文件會(huì)保存在索引中,除非你解決了問題了并且更新了索引厘贼,否則執(zhí)行 git commit都會(huì)失敗:
$ git commit
file.txt: needs merge
如果執(zhí)行 git status 會(huì)顯示這些文件沒有合并(unmerged),這些有沖突的文件里面會(huì)添加像下面的沖突標(biāo)識(shí)符:
<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
你所需要的做是就是編輯解決沖突界酒,(接著把沖突標(biāo)識(shí)符刪掉)圣拄,再執(zhí)行下面的命令:
$ git add file.txt
$ git commit
注意:提交注釋里已經(jīng)有一些關(guān)于合并的信息了嘴秸,通常是用這些默認(rèn)信息,但是你可以添加一些你想要的注釋庇谆。
上面這些就是你要做一個(gè)簡(jiǎn)單合并所要知道的岳掐,但是git提供更多的一些信息來 幫助解決沖突。
2.3撒銷一個(gè)合并
如果你覺得你合并后的狀態(tài)是一團(tuán)亂麻饭耳,想把當(dāng)前的修改都放棄串述,你可以用下面的命令回到合并之前的狀態(tài):
$ git reset --hard HEAD
或者你已經(jīng)把合并后的代碼提交,但還是想把它們?nèi)鲣N:
$ git reset --hard ORIG_HEAD
但是剛才這條命令在某些情況會(huì)很危險(xiǎn)寞肖,如果你把一個(gè)已經(jīng)被另一個(gè)分支合并的分支給刪了纲酗,那么 以后在合并相關(guān)的分支時(shí)會(huì)出錯(cuò)衰腌。
關(guān)于撤銷的更多內(nèi)容請(qǐng)參考《git reset簡(jiǎn)介》