常常被問到如何從一個分支合併特定的文件到另外一個分支。git
其實,只合並你須要的那些commits,不須要的commits就不合並進去了。工具
首先,用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
在一些特性狀況下,合併單個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
不管從事什麼行業,只要作好兩件事就夠了,
一個是你的專業、一個是你的人品,
專業決定了你的存在,
人品決定了你的人脈,
剩下的就是堅持,用善良專業和真誠贏取更多的信任。
不忘初心 方得始終!