3

我在这个 github 存储库上工作:https ://github.com/Sable/mclab

开发分支的历史有点不稳定。这就是发生的事情:

  • 环境搞砸的人 A 推动了一些 1970 年的提交。
  • 人 B 试图将他的“脆弱”分支合并到开发并推送到 github。但这发生了:https ://github.com/Sable/mclab/compare/aa6e2c9d74...9209f45db4 ;似乎回购上的每一次提交都被推送过。

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

所以我有两个问题:

  1. 究竟发生了什么?我猜 1970 年的提交以某种方式搞砸了合并,但我不确定。
  2. 什么是“修复”事情的最佳方式?我知道您无法真正撤消推送;我基本上希望发展的历史看起来像这件事发生之前的样子。我可以对回购进行奇怪的手术来实现这一目标。
4

1 回答 1

1

这是我想通的。

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

这就是我所做的:

  • develop从合并发生之前的分支开始(确实有 1970 年的提交)。
  • 基于develop.
  • git reset --hard开发中运行,返回到第一个 1970 提交的父级
  • 以交互方式将新分支重新定位到开发上,为我想要更改其日期的所有提交选择“编辑”并为它们选择合理的日期
  • 删除了github上的develop分支
  • 将新的开发分支推送到 github

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

于 2013-03-25T21:53:53.860 回答