Git:将提交的一部分应用于另一个分支

时间:2011-07-08 00:35:06

标签: git

如何将提交的部分应用于另一个分支?我知道我可以挑选一个提交,但我需要更进一步,“挑选”该提交引入的一些更改并将它们应用到另一个(目标)分支。

有没有一种干净的方法可以做到这一点,或者我应该只应用整个提交,手动撤消一些技巧,并记得在将来创建更多的原子提交?

2 个答案:

答案 0 :(得分:75)

git cherry-pick -n <SHA>将暂存更改但不提交更改。然后,您可以使用git reset -p取消您不想要的内容,或git reset HEADgit add -Ap仅展示您想要的更改。

答案 1 :(得分:12)

如果要应用的部分可以通过路径指定(即,您不希望在一个文件中指定数据),则可以使用另一种解决方案。

一种方法是从提交中形成一个补丁,并将其应用到您的分支。

您要修改的分支签出:

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

将路径relevant paths中提交SHA的任何更改应用于您当前的工作副本。