我在深陷s ***;我在我正在工作的分支上编写了一个小修补程序。出于某种原因,它不想推动,因为它“落后于他的远程对手”这是不可能的,因为我是唯一一个在那个分支上工作的人。我的同事告诉我做一个推动-f,我做了。但它将我所有的本地分支机构推到了远程,并用我在本地仓库上的版本替换了所有内容。现在22天前,对master的最后一次提交。我们失去了大量的工作。如何在所有分支上回滚git push -f?
答案 0 :(得分:1)
最后一个提交者(对于每个分支)需要推送他的最后提交。并始终使用:
git push -f <remote> <branch>
如果你想强行推动。
答案 1 :(得分:1)
我以某种方式安排了它。
Is there anyway to undo git push -f?给了我很多帮助
我所做的是使用在-f中显示的提示引用,看起来像
e658r75...63ehd63 master -> master (forced update)
e23r433...29e23gz dev -> dev(forced update)
我已经将配置默认设置为在执行任何操作之前推送仅当前分支
git config --global push.default current
然后,对于我覆盖的每个分支,我使用了在“...”之前显示push -f 的ref并执行了:< / p>
git checkout master
git push -f origin e658r75:master
git pull origin master
设置远程和本地回购的分支在推送-f之前的那一点。
请注意,在推送到ref:branch之后,我的本地分支机构没有处于HEAD状态(这仍然是旧的本地版本),这就是为什么我必须拉动远程分支来重置它们。