关于StackOverflow上的"flattening merge"的问题很少,答案通常是"git rebase".这些答案虽然错过了一个关键点 - 提交顺序.
假设有一个分支A,其中包含6月1日和8月1日的提交,而分支B具有7月1日的提交(更新以恢复下面描述的用例:分支是完全独立的,没有共同的祖先,例如来自2个不同的存储库).将B合并到A中时,会有以下历史记录(每个git日志):
Merged branch 'B'
Aug 1
Jul 1
Jun 1
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找的是获得相同结果的方法,但是没有合并提交(因此具有基础线性历史的顺序,是的,这意味着重新提交提交).git rebase在这里没有用,就像它一样,你会得到以下历史:
Jul 1
Aug 1
Jun 1
Run Code Online (Sandbox Code Playgroud)
要么
Aug 1
Jun 1
Jul 1
Run Code Online (Sandbox Code Playgroud)
换句话说,git rebase总是将一个分支堆叠在另一个分支之上,而我正在寻找解决方案,它将按作者的提交日期排序提交.
显然,对于简单的情况,可以通过使用git rebase -i手动后处理git rebase来实现所需的安排,但这对大型历史来说并不实用,所以我一直在寻找自动命令/脚本.
用例?如果A和B代表同一个项目的不同部分碰巧在不同的回购中,并且时间已经通过将它们合并在一起来纠正,那么很自然地希望线性历史以实际的开发顺序展开.
标题,基本上。这似乎是构建提交的首选资源。我在官方书籍中找不到描述这个主题的文章,所以如果我错过了,请指出我的方式。
我的问题是关于没有父母的提交,即初始提交。具体来说,在不存在父提交的情况下,什么会被散列?并且,什么时候需要父提交?是否可以在没有父母的情况下进行多次提交?
在我的实验中,我发现在第一次提交之前,不存在任何分支;考虑到分支是提交的引用,而且还不存在,这是有道理的。