【问题标题】:How to merge back cherry-picked commits in git?如何在git中合并回樱桃挑选的提交?
【发布时间】:2016-04-16 11:52:12
【问题描述】:

我有 2 个主要分支 masterdevelopment。我最近不得不推送一个已经合并到development 的修补程序,为此我从development 中挑选了提交,创建了一个新的修补程序分支,为修复添加了另一个提交,并将其合并到@987654326 @。我的问题是,我现在如何将新提交合并到 development 而不会弄乱 git 提交历史记录?

大概,我做了什么:

git cherry-pick <commit SHA>
git checkout -b hotfix-branch
[make more changes]
git commit -m "Fix issue"
git checkout master
git merge hotfix-branch

现在,如果我查看masterdevelopment 之间的git diff,则会显示来自development 的旧提交,因为它们是经过精心挑选的,因此不同的提交具有相同的更改。合并回development 并“修复”这些差异的最佳方法是什么?

编辑添加:或者,在这种情况下我应该怎么做,其中一个修补程序由development 分支中的提交组成?

【问题讨论】:

  • 您所说的一般是git flow 的工作原理。现在将 master 重新合并到开发中没有问题。 Git 应该检测到两者中都存在相同的更改并为您解决。
  • @RobbieAverill git flow 是我们正在尝试做的事情,但在这种情况下,修补程序所需的提交已经在开发中,因此使用cherrypicking,提交显示为重复(不同提交)。如果我在开发中执行git merge master,那么新的合并提交会显示在 master 上的 diff 中,即使这些更改已经在 master 上。我说得通吗?
  • @RobbieAverill 或者这些提交显示为差异实际上可以吗?那个 git 会照顾它前进吗?我担心的是 developmentmaster 分支之间的不同历史
  • 我喜欢这个问题。我个人认为没有问题,但我有兴趣看看是否有比我知识更多的人给你答案,因为这实际上也与我有关。

标签: git github merge cherry-pick


【解决方案1】:

您需要在历史树“向下”选择修复,以便稍后您可以将其“向上”干净地合并到其他分支。

  1. 检查合并基础(通常,有时在树的下方)。
  2. Cherry-pick A 导致新的提交 X
  3. X 合并回两个分支。

在此之后,两个分支将拥有共同的X,这意味着它们都包含修复。

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 2013-01-07
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2017-02-26
    相关资源
    最近更新 更多