1

我们在这里做 Git Flow,但现在我们需要在 Git Flow 启动之前创建一个修补程序分支。我们v906b03在创建releasedevelop分支之前有一个标签。我们还有Git Flow 启动后v914v915标签。

该方法将是一些在这行:

$ git checkout master
$ git reset --hard v906b03 #make sure that master "passed by" v906b03
$ git branch v906b03-hotfix
$ git merge v914 #this merge should be a fast-forward
$ git merge v915 #this merge should be a fast-forward

现在,我得到的是用于合并的递归合并v914。我试图找出没有运气v906b03就无法实现的提交。v914我试过git log --oneline --not v914 v906b03了,但它是空的。我也试过git log --oneline v914..v906b03了,应该是一样的,也是空的。

到底是怎么回事?

4

3 回答 3

1

合并标签的默认行为是--no-ff用作合并选项

Git 2.17(2018 年第二季度)不再是这种情况

请参阅Junio C Hamano ( ) 的提交 adcc94a(2018 年 2 月 14 日(由Junio C Hamano 合并 -- --提交 f88590e中,2018 年 3 月 6 日)gitster
gitster

merge: 合并跟踪标签时允许快进

很久以前在fab47d0 ("merge: force edit and no-ff mode when merging a tag object", 2011-11-07, Git v1.7.9-rc0), " git merge" 在合并一个标签对象时总是创建一个合并提交标记,即使被合并的侧分支是当前分支的后代。

此默认设置有利于上游维护者进行合并以集成下游贡献者签名的工作,no-ff但当下游贡献者拉取更新的发布标签以使其长期运行的主题分支赶上上游时,将留下毫无意义的合并。
当没有关于该主题的本地工作时,这样的合并应该简单地快进到发布标记指向的提交。

(再次)更新git merge将标签对象合并到的“”的默认值

  • (1) --no-ff(即即使在侧分支快进时也创建合并提交)如果要合并的标签不在refs/tags/层次结构中的预期位置,并且
  • (2) --ff(即在可能的情况下允许快进更新)否则。
于 2018-03-11T01:15:36.060 回答
0

我在http://git.661346.n2.nabble.com/git-merge-lt-tag-gt-behavior-td7580058.html上找到了一个参考,指出合并标签的默认行为是--no-ff用作合并选项。我什至尝试使用--ff但没有成功,但使用提交哈希甚至git show-ref <tag>可以解决问题。

于 2015-10-09T15:58:05.020 回答
0

如果从 v906b03 合并到 v914 和 v915 只是快进,那么您可以立即在 v915 上创建 v906b03-hotfix 而根本不合并。

另外你为什么把你的主人搬到v906b03?(重置--硬)

于 2015-10-10T14:06:21.657 回答