0

在涉及重置的本地存储库的提交后,我们的中央 git 存储库进入了一个奇怪的状态。

我不能 100% 确定这次提交中到底做了什么,但是在这次提交之后,当从这个重置的本地存储库推送内容时,来自其他提交的更改可以被旧版本静默覆盖(​​“静默”意味着覆盖其他提交不会出现在更改历史记录中)。

我的问题是:
(1)我如何诊断发生了什么(最好没有访问重置的本地仓库)?
(2) 如果我无法查明发生了什么,摆脱这种状态的最佳行动方案是什么?

对于(2)我正在考虑(a)丢弃有问题的本地仓库并且不再使用它,(b)在有问题的提交之前硬重置中央仓库并手动重播不包括有问题的提交的提交。

4

1 回答 1

1

您可以使用git show <commit-id>. 不知道“其他提交的覆盖不会出现在更改历史记录中”是什么意思,git中没有覆盖之类的东西,只有提交。

那么,您已经确定了一个有问题的提交?刚刚的git revert时候。

或者一个分支被强制推送重写(一些提交从历史中消失了)?更糟糕的是,您应该使用它,git fsck −−lost-found直到它被垃圾收集为止。

下次配置中央存储库以禁止非快进receive.denyNonFastForwards=true或至少启用 reflogs logAllRefUpdates=true

于 2012-09-05T13:20:42.637 回答