使用此策略撤消 git reset --hard 和 git push -f



我可以通过让没有拉入这些更改的其他人运行"git push -f origin master"来更改首先执行的原始"git push -f origin master"来撤消 git 重置 --hard && git push -f origin master"吗?

我假设您使用的是"星形"拓扑,即一个中央存储库,每个开发人员都向/从该存储库推送/获取。

这取决于该人何时合并公共分支。

一个更安全的方法是首先让任何人做git push -f origin origin/master:master,而不是每个人(除了你)做git push origin origin/master:master(没有-f)。

第一次推送将丢弃您的提交,并将分支保留在上次获取的人员的状态。然后每个人都推动他们认为是最新大师的东西。这比事先检查谁拥有最新来源更容易。

为什么git push -f origin origin/master:master而不是简单地git push -f origin master?后者推动我当地的分支机构。前者推动了我认为对远程版本正确的内容。因此,如果我定期git fetch,但从未将其git merge给我的本地主人,则第一个版本将正确处理此问题。

实际上,还有一种更好的方法来处理这个问题。最有可能(因为它是默认设置)您可以使用git reflog来浏览分支的历史记录。您创建的每个提交,包括那些因修改、重定基准而不再"可见"的提交。您可以深入研究此内容以在意外git reset --hard之前获取提交哈希,执行git reset --hard $hashgit push -f origin master自己。

更好的是,总是,总是在用-f推动之前进行三重检查。或者考虑完全禁止它。

最新更新