Git合併指定文件到另外一個分支

常常被問到如何從一個分支合併特定的文件到另外一個分支。git

其實,只合並你須要的那些commits,不須要的commits就不合並進去了。工具

合併某個分支上的單個commit

首先,用git log或sourcetree工具查看一下你想選擇哪些commits進行合併,例如:code

好比feature 分支上的commit 82ecb31 很是重要,它含有一個bug的修改,或其餘人想訪問的內容。it

不管什麼緣由,你如今只須要將82ecb31 合併到master,而不合並feature上的其餘commits,ast

因此咱們用git cherry-pick命令來作:bug

git checkout master
git cherry-pick 82ecb31

這樣就好啦。如今82ecb31就被合併到master分支,並在master中添加了commit(做爲一個新的commit)。sourcetree

cherry-pick 和merge比較相似,文件

若是git不能合併代碼改動(好比遇到合併衝突),git須要你本身來解決衝突並手動添加commit。行業

這裏git cherry-pick每次合併過來會顯示文件衝突(其實並無衝突代碼部分,只需手動解決既可)copy

合併某個分支上的一系列commits

在一些特性狀況下,合併單個commit並不夠,

你須要合併一系列相連的commits。這種狀況下就不要選擇cherry-pick了,rebase 更適合。

還以上例爲例,假設你須要合併feature分支的commit76cada ~62ecb3 到master分支。

首先須要基於feature建立一個新的分支,並指明新分支的最後一個commit:

git checkout featuregit
git checkout -b newbranch 62ecb3

而後,rebase這個新分支的commit到master(--ontomaster)。

76cada^ 指明你想從哪一個特定的commit開始。

git rebase --onto master 76cada^

獲得的結果就是feature分支的commit 76cada ~62ecb3 都被合併到了master分支。

另外若是隻想將feature分支的某個文件f.txt合併到master分支上。

1: git checkout feature
2: git checkout --patch master f.txt

第一個命令: 切換到feature分支;

第二個命令:合併master分支上f文件到feature分支上,將master分支上 f 文件追加補丁到feature分支上 f文件。

你能夠接受或者拒絕補丁內容。

若是隻是簡單的將feature分支的文件f.txt copy到master分支上;

git checkout master
git checkout feature f.txt

不管從事什麼行業,只要作好兩件事就夠了,

一個是你的專業、一個是你的人品,

專業決定了你的存在,

人品決定了你的人脈,

剩下的就是堅持,用善良專業和真誠贏取更多的信任。

不忘初心 方得始終!

相關文章
相關標籤/搜索