Git合并出错,奇怪的历史



我在这个github repo工作:https://github.com/Sable/mclab

开发分支上的历史有点不稳定。结果如下:

  • 环境糟糕的A推送了一些日期为1970年的提交。
  • Person B试图将他的"脆弱"分支合并到develop并推送到github。但这发生了:https://github.com/Sable/mclab/compare/aa6e2c9d74...9209f45db4;好像每一次提交都被推送过。

现在的历史是奇怪的,例如https://github.com/Sable/mclab/commits/develop?page=58;您可以看到2008年的第一次提交,然后是1970年的提交,然后是(在下一页)最近的提交,这些提交应该位于历史记录的顶端。

我有两个问题:

    到底发生了什么?我猜合并被1970年的提交搞砸了,但我不确定。
  1. "修复"事情的最佳方法是什么?我知道你不能撤销推;我希望发展的历史能回到这一切发生之前的样子。我可以在repo上做一些奇怪的手术来实现这一点。

这是我想出来的。

合并进行得很好——合并不依赖于时间戳(例如,git log --date-order显示一个合理的顺序)。但是历史看起来很奇怪,因为时间戳决定了(在其他事情中)git log中提交的默认顺序,显然GitHub中的提交比较视图。

我是这样做的:

  • 从合并发生之前的develop分支开始(它确实有1970次提交)。
  • 创建基于develop的新分支
  • 在develop上运行git reset --hard,返回到1970年第一次提交的父进程
  • 将新分支交互式地重设为"开发",为我想更改日期的所有提交选择"编辑",并为它们选择合理的日期
  • 删除github上的开发分支
  • 将新的开发分支推送到github

这似乎工作得很好,尽管我必须指导人们在拉之前要小心(要么克隆一个新的repo,要么重置回我在重新基于之前所做的相同的提交)。

最新更新