我应该混合发展成为主,然后在标签后回来?
现在的问题是-如何实现正确的版本(如图中git describe
上) develop
后,我把它合并进master
和标签master
。
我使用普通的git分支 - master
来进行生产。 我们假设git describe
在master
上git 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 describe
的develop
可以在尚未设置新的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?