【问题标题】:How do I merge a single commit?如何合并单个提交?
【发布时间】:2010-12-12 11:54:53
【问题描述】:

有时我会同时与多个分支机构合作。假设我有名为 master、release-1.1 和experimental 的分支。我创建了一个新文件或在实验中进行了更改,我希望将一个更改应用于其他分支。

我可以在 git 中执行此操作吗?如果我只是将提交合并到另一个分支中,git 会自动“快进”并包含其间的任何提交。但是必须有一些方法来处理这个用例。

【问题讨论】:

    标签: git merge commit


    【解决方案1】:

    你想做的事叫做cherry picking。您可以使用以下命令cherry pick单个提交:

    $ git cherry-pick <commit hash or name>
    

    这会将来自该提交的更改合并到您当前的分支中。但是请注意,这会创建一个 new 提交;这个新提交与精心挑选的提交具有完全相同的更改(甚至相同的提交日期和作者),但从技术上讲,它是一个 new 提交,所以你会看到它是一个新提交例如,gitk。您还必须为要查看更改的每个分支执行樱桃挑选。

    【讨论】:

      【解决方案2】:

      解决方案,但不幸的是,您在进行更改之前需要了解的解决方案是仅为此更改创建单独的分支(所谓的“主题分支” ),关闭最早的分支或有意义的最早提交,并将此分支合并到任何需要此提交的分支中。

      在某些情况下,其他解决方案可能是在维护分支中进行更改,将维护分支合并到稳定分支,并将稳定分支合并到开发分支。

      Junio C Hamano(Git 维护者)在他的博客中写道:Resolving conflicts/dependencies between topic branches early

      【讨论】:

      • 您有指向该博客条目的链接吗?我认为这会很有帮助,来自 Git 权威。
      • 樱桃采摘似乎比这更合适,抱歉。
      • @VonC:就是这样。谢谢(答案已更新)。 @Radar:Cherry-picking 创建了许多重复的提交,这可能会在重新集成时造成伤害。不过,如果是一个分支,那也没关系。
      猜你喜欢
      • 1970-01-01
      • 2022-06-30
      • 2012-09-13
      • 2011-09-04
      • 2011-09-05
      • 2023-01-12
      • 2012-06-02
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多