【发布时间】:2016-04-16 11:52:12
【问题描述】:
我有 2 个主要分支 master 和 development。我最近不得不推送一个已经合并到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
现在,如果我查看master 和development 之间的git diff,则会显示来自development 的旧提交,因为它们是经过精心挑选的,因此不同的提交具有相同的更改。合并回development 并“修复”这些差异的最佳方法是什么?
编辑添加:或者,在这种情况下我应该怎么做,其中一个修补程序由development 分支中的提交组成?
【问题讨论】:
-
您所说的一般是git flow 的工作原理。现在将 master 重新合并到开发中没有问题。 Git 应该检测到两者中都存在相同的更改并为您解决。
-
@RobbieAverill
git flow是我们正在尝试做的事情,但在这种情况下,修补程序所需的提交已经在开发中,因此使用cherrypicking,提交显示为重复(不同提交)。如果我在开发中执行git merge master,那么新的合并提交会显示在 master 上的 diff 中,即使这些更改已经在 master 上。我说得通吗? -
@RobbieAverill 或者这些提交显示为差异实际上可以吗?那个 git 会照顾它前进吗?我担心的是
development和master分支之间的不同历史 -
我喜欢这个问题。我个人认为没有问题,但我有兴趣看看是否有比我知识更多的人给你答案,因为这实际上也与我有关。
标签: git github merge cherry-pick