Vyt*_*tas 2 git branching-and-merging
根据我的理解,我们一直在用Git做一个项目,这是一个非常标准的分支模型,如下所述:http://nvie.com/posts/a-successful-git-branching-model/
我们从"大师"开始,从中分支"发展".有许多提交"开发",然后我们从"开发"分支"发布-1".有一些提交"release-1",然后我们将"release-1"合并为"master",并再次将"release-1"合并为"develop".然后我们删除了"release-1".
现在我希望"主"和"开发"分支处于同一点.并且它们确实具有相同的文件,但根据分支图,它们具有完全不同的历史记录,唯一的共同点是存储库中的第一个提交.
所以有两个问题:
1)为什么他们没有相同的历史/他们为什么不在同一点?
2)我们如何解决它?我们应该强制合并"发展"到"掌握"或"掌握"到"发展"吗?
正如LeGec所说,提交是从包括作者,提交者,父提交等在内的各种信息生成的,这些信息应该使其具有唯一性/可识别性.
根据您的描述,这听起来像是你的情况:
Master | M1 -------------------------> M2 (merge commit)
-------- \ /
Release | \ R1 -> R2
-------- \ / \
Develop | D1 -> D2 -> D3 --------> D4 (merge commit)
Run Code Online (Sandbox Code Playgroud)
正如您在案例中所描述的那样,M2和D4中的文件将是相同的,但是他们的父提交,以及它们的创建时间将是不同的.
这不太可能导致您的问题,因为您的工作将继续,develop并且您可以愉快地遵循下次发布工作流程.由于您不是master独立承诺,因此不应遇到合并冲突.
如果你想"修理",就是给他们一个共同的承诺,你可以合并master到develop,但它不会真正得到你任何东西,除了一个额外的合并提交.
Master | M1 -------------------------> M2 (merge commit)
-------- \ / \
Release | \ R1 -> R2 \
-------- \ / \ \
Develop | D1 -> D2 -> D3 --------> D4 -> D5 (merge commit)
Run Code Online (Sandbox Code Playgroud)
请注意,这是假设您没有执行快进合并.