Git的分支合併主要依賴於checkout命令和cherry-pick 命令。cherry-pick就是從不同的分支中撿出一個單獨的commit,並把它和你當前的分支合併。如果你以並行方式在處理兩個或以上分支,你可能會發現一個在全部分支中都有的bug,如果你在一個分支中解決了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不會弄亂其他的檔案或commit。
1.例子:如我的Git檔案在H:盤下,/h/myfirstproject,該目錄中有三個分支:test分支,newbranch1分支和mater分支。如果想把test分支的某個commit合併到master,需要經過下面的步驟:
執行git log -3 --graph test,檢視test分支下的commit: 注:commit 後面的hash值代表某個commit,這裡把”2e1ada53819d46557b24ee7376dc61d37a06939d“這個commit提交到master。
執行git checkout master,切換到master分支。
執行 git cherry-pick 2e1ada53819d46557b24ee7376dc61d37a06939d,該commit便被提交到了master分支。
到此,”2e1ada53819d46557b24ee7376dc61d37a06939d“這個commit便被提交到了master分支。
2.例子:把本地的test分支的某個commit提交到遠端testdevelop分支。
從遠端分支 checkout 出來的本地分支,稱為跟蹤分支(tracking branch)。跟蹤分支是一種和遠端分支有直接聯絡的本地分支。在跟蹤分支裡輸入Git push,Git
會自行推斷應該向哪個伺服器的哪個分支推送資料。反過來,在這些分支裡執行git pull 會獲取所有遠端索引,並把它們的資料都合併到本地分支中來。
在克隆倉庫時,Git 通常會自動建立一個名為 master 的分支來跟蹤 origin/master。這正是git push 和 git pull 一開始就能正常工作的原因。當然,你可以隨心所欲地設定為其它跟蹤分支,比如origin 上除了 master 之外的其它分支。剛才我們已經看到了這樣的一個例子:git checkout -b [分支名]
[遠端名]/[分支名]。
1.首先新建一個臨時分支,並把臨時分支與遠端分支關聯。
git checkout -b tempbarch --track origin/testdevelop
2.此時已經切換到了tempbarch分支。再執行:git log -3 --graph test,檢視test分支下的commit:
3.執行git cherry-pick f6cb436ff5a010cdd72dc2c8ff018db8e8832271 即可把”f6cb436ff5a010cdd72dc2c8ff018db8e8832271“這個commit提交到tempbranch分支。
然後再透過Tortoise客戶端的push命令,即可把該commit提交到遠端testdevelop分支。
Git的分支合併主要依賴於checkout命令和cherry-pick 命令。cherry-pick就是從不同的分支中撿出一個單獨的commit,並把它和你當前的分支合併。如果你以並行方式在處理兩個或以上分支,你可能會發現一個在全部分支中都有的bug,如果你在一個分支中解決了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不會弄亂其他的檔案或commit。
1.例子:如我的Git檔案在H:盤下,/h/myfirstproject,該目錄中有三個分支:test分支,newbranch1分支和mater分支。如果想把test分支的某個commit合併到master,需要經過下面的步驟:
執行git log -3 --graph test,檢視test分支下的commit: 注:commit 後面的hash值代表某個commit,這裡把”2e1ada53819d46557b24ee7376dc61d37a06939d“這個commit提交到master。
執行git checkout master,切換到master分支。
執行 git cherry-pick 2e1ada53819d46557b24ee7376dc61d37a06939d,該commit便被提交到了master分支。
到此,”2e1ada53819d46557b24ee7376dc61d37a06939d“這個commit便被提交到了master分支。
2.例子:把本地的test分支的某個commit提交到遠端testdevelop分支。
從遠端分支 checkout 出來的本地分支,稱為跟蹤分支(tracking branch)。跟蹤分支是一種和遠端分支有直接聯絡的本地分支。在跟蹤分支裡輸入Git push,Git
會自行推斷應該向哪個伺服器的哪個分支推送資料。反過來,在這些分支裡執行git pull 會獲取所有遠端索引,並把它們的資料都合併到本地分支中來。
在克隆倉庫時,Git 通常會自動建立一個名為 master 的分支來跟蹤 origin/master。這正是git push 和 git pull 一開始就能正常工作的原因。當然,你可以隨心所欲地設定為其它跟蹤分支,比如origin 上除了 master 之外的其它分支。剛才我們已經看到了這樣的一個例子:git checkout -b [分支名]
[遠端名]/[分支名]。
1.首先新建一個臨時分支,並把臨時分支與遠端分支關聯。
git checkout -b tempbarch --track origin/testdevelop
2.此時已經切換到了tempbarch分支。再執行:git log -3 --graph test,檢視test分支下的commit:
3.執行git cherry-pick f6cb436ff5a010cdd72dc2c8ff018db8e8832271 即可把”f6cb436ff5a010cdd72dc2c8ff018db8e8832271“這個commit提交到tempbranch分支。
然後再透過Tortoise客戶端的push命令,即可把該commit提交到遠端testdevelop分支。