2011-07-08 60 views
41

如何將部分從一個分支提交到另一個分支?我明白我可以挑選一個提交,但我需要更進一步,並「挑選」由該提交引入的一些更改並將它們應用到另一個(目標)分支。Git:將提交的一部分應用到另一個分支

是否有一個乾淨的方法來做到這一點,或者我應該只應用整個提交,手動撤消一些區塊,並記住將來創建更多的原子提交?

+3

可能重複[部分櫻桃採摘提交與混帳](http://stackoverflow.com/questions/1526044/partly-cherry-picking-a-commit-with-git) – jweyrich

+1

絕對是重複... – Christoph

回答

66

git cherry-pick -n <SHA>將暫存更改但不提交它們。然後,您可以使用git reset -p來取消您不需要的位,或者git reset HEADgit add -Ap僅分階段進行所需的更改。

+0

謝謝,這很好! – Abhi

6

如果要應用的部分可以通過路徑指定(即,您不希望在一個文件中指定hunk),則可以使用其他解決方案。

一種方法是從提交中形成一個補丁,並將其應用到您的分支。

與要分支,以修改已簽出:

git show <SHA> -- <relevant paths> | git apply 

將應用於任何更改提交SHA,在路徑relevant paths到您當前的工作副本。

+1

我試過這個,但所有行都說「補丁不適用」 –

相關問題