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