有时我会同时与多个分支机构合作。假设我有名为 master、release-1.1 和experimental 的分支。我创建了一个新文件或在实验中进行了更改,并且我希望将一个更改应用于其他分支。
我可以在 git 中执行此操作吗?如果我只是将提交合并到另一个分支中,git 会自动“快进”并包含其间的任何提交。但是必须有一些方法来处理这个用例。
你想做的事情叫做樱桃采摘。您可以使用以下命令选择单个提交:
$ git cherry-pick <commit hash or name>
这会将来自该提交的更改仅合并到您当前的分支中。但是请注意,这会创建一个新的提交;这个新提交与精选提交具有完全相同的更改(甚至是相同的提交日期和作者),但从技术上讲,它是一个新提交,因此您会看到它是一个新提交,例如gitk
. 您还必须为要查看更改的每个分支执行樱桃挑选。
解决方案,但不幸的是,在进行更改之前您需要知道的解决方案是仅为此更改创建单独的分支(所谓的“主题分支”),关闭最早的分支或有意义的最早提交,然后合并此分支进入任何需要此提交的分支。
在某些情况下,其他解决方案可能是在维护分支中进行更改,将维护分支合并到稳定分支,并将稳定分支合并到开发分支。
Junio C Hamano(Git 维护者)在他的博客中写道:Resolving conflict/dependencies between topic branch early