![](/img/trans.png)
[英]Merge a commit from Develop to Master branch in the “successful git branching model”
[英]“This branch is 1 commit ahead, 1 commit behind master” in Github while using “A successful Git branching model”
我只用一个文件在一个干净的仓库工作。 我是唯一的开发人员。
我想在一个成功的git分支模型中进行开发 - 发布 - 主工作流程,所以我做了:
注意:请记住,默认情况下我有快进,所以将所有merge
命令视为merge --no-ff
。
我的起源是Github。
在主分支:
git add .
git commit -m "Initial commit"
git push origin master
git checkout -b develop
在开发分支。 我对文件进行了更改,然后:
git add .
git commit -m "work in the file"
我准备将其作为版本0.0发布
git checkout -b release-0.0 develop
在release-0.0分支中。 我在文件中添加了一个版本号。
git add .
git commit -m "Bumped version 0.0"
我准备将此版本合并到master中。
git checkout master
git merge release-0.0 -m "Releasing v0.0"
git tag -a 0.0 -m "Version 0.0"
......并发展。
git checkout develop
git merge release-0.0 -m "Merge release 0.0 into develop"
然后我推动两个主人并发展到Github
git push origin master
git push origin develop
当我检查Github中的develop分支时,它说:
该分支提前1次提交,1次提交后提交。
主分支没有这样的消息。
我该怎么做才能解决这个问题? master和develop在这一点上应该是相同的,因为它们与release-0.0合并。
不,它不会相等,因为您默认禁用快进。 每个合并都会创建一个新提交,并且合并提交具有不同的ID。 因此master中的合并提交不是开发中的合并提交。 因此,开发有一个不在master中的提交,而master有一个不在开发中的提交。 因此,发展中的信息。
至于master中不存在的消息,那是因为当分支与master进行比较时会出现消息。 因此,如果您将master与master进行比较,则不需要该消息。
一种解决方案是启用快速转发并在发布和主服务器中显式创建合并提交,然后保持快速转发开发。 另一个选择是在每次合并之后重新开发。 根据您的工作流程和代码,您希望如何进行操作纯粹是您的个人选择。
只要分支中的代码完全符合您的要求,您就不应该担心这些消息。
只是为了添加其他答案:
最初的git-flow自2012年以来一直没有开发,并且已经被许多地方的git-flow AVH版本所取代(包括Ubuntu存储库和Git for Windows )。
AVH版本引入的差异之一是最终合并是master * into develop而不是release to develop 。
这使得master成为develop的直接父级,并且应该消除你看到的消息的一部分; 只保留“1提前”。 它还使得更容易验证主人和开发人员没有意外分歧。
*更准确地说,它是合并到开发中的新标签(在主站上)。
因为您正在使用--no-ff
每个合并都将是一个不同的提交。 当您将release-0.0
合并到develop和master中时,合并提交将会有所不同。 这是它的样子:
正如您所看到的,开发分支有一个提交(Merge release 0.0 into develop),它不在主服务器中(无法访问),主分支有一个提交(释放v0.0),它不在开发分支中。 这就是GitHub对该消息的说法,它完全没问题(内容相同,但提交不同)。
如果您想使用git flow,请查看https://github.com/nvie/gitflow ,它将为您提供很多帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.