我应该混合发展成为主,然后在标签后回来?

现在的问题是-如何实现正确的版本(如图中git describe上) develop后,我把它合并进master和标签master

我使用普通的git分支 - master来进行生产。 我们假设git describemastergit describe显示1.5 ,并且在与develop合并后, master显示1.5-234-g1e894af
所以我使用git tag -a 1.6创建一个新的带注释的标签,因此git describe master现在显示1.6

但是: git describe develop仍然显示1.5-something ,这对我来说很奇怪 - 它具有与master相同的提交 - 为什么git认为它仍然属于1.5版本?

没有更好的东西进入我的大脑,所以我只是将主合并到开发中,之后开发显示版本1.6-2-...这是可以接受的,但会产生更多无用的合并提交,并警告我“通过递归合并”也认为做没有意义,但如何实现正确的版本呢?


这听起来像你使用git时出了什么问题。 如果你将develop合并到master ,但从未master develop ,那么master是可以自由分歧的 - master任何变化都不会进入develop分支 。 因此你声明他们有相同的提交是错误的。 使用VonC的图表,

m(1.5)--m1--m2--m(1.6, master)
               / 
  d-------d----d (develop)

我标记为“m1”和“m2”的提交将永远不会进入“开发”。 如果没有这样的提交 - 你没有对主人做任何工作 - 那么当你合并发展成为主人时,它应该是一个快速合并; 他们会有相同的提交,并且一切都会按照您所描述的那样工作。

当然,解决方案取决于您尝试实现的工作流程。

  • 就我个人而言,我现在要么从master开始删除并重新创建develop分支,要么将其快速转发到1.6 ,以便在继续develop时拥有以下结构:

    m(1.5)--m1--m2---m(1.6, master)
                   /  
      d-------d----d   d--d (develop)
    

    然后git describe会认为它基于1.6,因为它实际上是。

  • 如果你的意图是develop是一个连续的开发分支,而master是偶尔的“发布”分支,那么你应该避免创建任何提交像m1和m2; 只要你这样做, git describe准确地告诉你一些事情是不同的

  • 我并不是在团队中使用git的专家,所以请尽情享受这一切。


    考虑到git describe是关于“找到可以从提交中获得的最新标记”,那么git describedevelop可以在尚未设置新的1.6标签的提交中回到master

    m(1.5)--m--m--m(1.6, master)
                 / 
      d-------d--d (develop)          => git describe develop will return 1.5-xxx
    

    合并主人后开发

    m(1.5)--m--m--m(1.6, master)
                 / 
      d-------d--d---d (develop)      => git describe develop will return 1.6-xxx
    

    如果其他贡献者没有在develop工作,您可以考虑重新develop分支在master之上,以便取回预期的标签。 (git rebase)

    m(1.5)--m--m--m(1.6, master)
                               
                    d--d--d (develop) => git describe develop will return 1.6-xxx
    
    链接地址: http://www.djcxy.com/p/57375.html

    上一篇: Should I git merge develop into master and then back after tagging?

    下一篇: OpenMP strange behaviour