我想使用git
将开发分支提交中的更改合并到另一个分支。我尝试了git cherry-pick
但它会导致整个文件中的更改,而不是特定的更改。谁能帮忙?
要记住的一件事是,提交是决定"已经合并"的内容时考虑的最小单位。 所以有一个权衡,如果你不创建合并关系,你很可能会得到一个虚假的合并冲突,但如果你确实为一个更改在分支之间创建了一个合并关系,它可能会导致一些未来的合并无法接受其他更改。
在 99% 的情况下,不创建合并关系是这里较小的邪恶,所以我想说你在cherry-pick
上走在正确的轨道上。
下一步是仅获取所需的更改。 最简单的方法是使用--no-commit
(或-n
(选项:
git cherry-pick -n <commit-id>
然后,目标提交的更改将被暂存,但不会提交。 您可以使用以下命令删除对其他文件的更改
git reset HEAD -- path/to/other/file
git checkout -- path/to/other/file
如果所需的更改与其他更改位于同一文件中,则可以取消暂存该文件,然后在"交互式"模式下重新暂存该文件
git reset HEAD -- path/to/file
git add -i path/to/file
(有关"交互式添加"界面的详细信息,请参阅 https://git-scm.com/docs/git-add。 它有多种方法可以选择要包含的更改。
完成选择性暂存后,您可以提交,然后从工作树中清除任何剩余的不需要的更改。