我如何将一个分支中的部分提交应用到另一个分支?我知道我可以使用cherry-pick来选择一个提交,但我需要更进一步,“挑选”该提交引入的某些更改并将它们应用于另一个(目标)分支。
有没有一种干净的方法来实现这一点,或者我应该只应用整个提交,手动撤消一些块,并记住在将来创建更多原子提交?
我如何将一个分支中的部分提交应用到另一个分支?我知道我可以使用cherry-pick来选择一个提交,但我需要更进一步,“挑选”该提交引入的某些更改并将它们应用于另一个(目标)分支。
有没有一种干净的方法来实现这一点,或者我应该只应用整个提交,手动撤消一些块,并记住在将来创建更多原子提交?
git cherry-pick -n <SHA>
命令会暂存更改,但不会提交。之后您可以使用 git reset -p
命令来取消暂存您不需要的部分,或者使用 git reset HEAD
和 git add -p
命令只暂存您想要的更改。
如果要应用的部分可以通过路径指定(即您不希望指定一个文件中的行块),则可能存在另一种解决方案。
一种方法是从提交中形成补丁,然后将其应用到您的分支。
在您想要修改的分支已检出的情况下:
git show <SHA> -- <relevant paths> | git apply
将提交SHA中的任何更改,在相关路径
中应用到您当前的工作副本。