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

Abh*_*bhi 50 git

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

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

dah*_*byk 77

git cherry-pick -n <SHA>将进行更改但不提交它们.然后,您可以使用git reset -p到unstage你不想位,或git reset HEADgit add -Ap阶段性只有你想要的变化.


Ale*_*lex 13

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

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

使用您要修改的分支签出:

git show <SHA> -- <relevant paths> | git apply
Run Code Online (Sandbox Code Playgroud)

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

  • 我试过了,但所有行都说“补丁不适用” (2认同)