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

时间:2016-01-27 19:29:58

标签: git github

我可以撤消git reset --hard&& git push -f origin master通过让其他未插入这些更改的人运行“git push -f origin master”来更改原先执行的“git push -f origin master”?

1 个答案:

答案 0 :(得分:0)

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

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

更安全的方法是首先让任何人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?后者推动我的本地分支。 Theformer推动了我认为对远程版本正确的东西。因此,如果我git fetch定期,但从不git merge我的本地主人,第一个版本将正确处理此问题。

实际上有更好的方法来处理这个问题。最有可能(因为它是默认值)您可以使用git reflog来浏览分支的历史记录。您创建的每一个提交,包括因修改而不再“可见”的提交,重新设置,等等。您可以通过此方法在意外git reset --hard之前获取提交哈希值,自己执行git reset --hard $hashgit push -f origin master

在使用-f推送之前,总是,始终三重检查。或者考虑完全禁止这一点。