我可以撤消git reset --hard&& git push -f origin master通过让其他未插入这些更改的人运行“git push -f origin master”来更改原先执行的“git push -f origin master”?
答案 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 $hash
和git push -f origin master
。
在使用-f
推送之前,总是,始终三重检查。或者考虑完全禁止这一点。