"这个分支是提前1次提交,1次提交在主人之后"在Github中使用"一个成功的Git分支模型"

时间:2016-02-27 16:29:14

标签: git github git-branch branching-and-merging

我只用一个文件就在一个干净的仓库里工作。我是唯一的开发人员。

我想在A succesful git branching model中进行开发 - 发布 - 主工作流程,所以我做了:

注意:请注意默认情况下我有快进,因此请将所有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次提交后提交。

分支没有这样的消息。

我该怎么做才能解决这个问题?此时开发应该相等,因为它们与 release-0.0 合并。

3 个答案:

答案 0 :(得分:5)

不,它不会相等,因为默认情况下您已禁用快进。每个合并都会创建一个新提交,并且合并提交具有不同的ID。因此master中的合并提交不是开发中的合并提交。因此,开发有一个不在master中的提交,而master有一个不在开发中的提交。因此,发展中的信息。

对于master中不存在的消息,这是因为当分支与master进行比较时会出现消息。因此,如果您将master与master进行比较,则不需要该消息。

一种解决方案是启用快速转发并在发布和主服务器中显式创建合并提交,然后保持快速转发开发。另一个选择是在每次合并之后重新开发。您希望如何处理它完全取决于您的工作流程和代码。

只要分支中的代码完全符合您的要求,那么您所关注的信息就不会引起您的注意。

答案 1 :(得分:5)

只是添加其他答案:

原始git-flow自2012年以来一直处于开发阶段,并且在很多地方已被git-flow AVH edition取代(包括Ubuntu repositoriesGit for Windows

AVH版本引入的差异之一是最终合并是 *进入开发而不是发布的合并进入开发

这使成为开发的直接父级,并且应该消除您看到的消息的一部分;只有" 1提前提前"应该留下来。它还使得更容易验证主人和开发人员没有意外分歧。

*更准确地说,它是合并到develop中的新标记(在master上)。

答案 2 :(得分:2)

因为你使用的是relese-0.0,所以每一个单独的提交都是不同的。将<?php $doc = new DOMDocument(); $doc->loadHTMLFile($url); $xpath = new DOMXpath($doc); $post = $xpath->query("//*[contains(@class, 'post')]"); $array = iterator_to_array($post); ?> 合并到develop和master中时,合并提交将有所不同。这是它的样子:

commits

正如您所看到的,开发分支有一个提交(Merge release 0.0 into develop),它不在主服务器中(无法访问),主分支有一个提交(释放v0.0),它不在开发中科。这就是gihub用这条消息说的话,它完全没问题(内容相同,但提交的内容不同)。

如果您想使用git flow,请查看https://github.com/nvie/gitflow,这对您有很大帮助。