Git在所有分支上撤消push -f

时间:2013-06-19 08:20:42

标签: git github push

我在深陷s ***;我在我正在工作的分支上编写了一个小修补程序。出于某种原因,它不想推动,因为它“落后于他的远程对手”这是不可能的,因为我是唯一一个在那个分支上工作的人。我的同事告诉我做一个推动-f,我做了。但它将我所有的本地分支机构推到了远程,并用我在本地仓库上的版本替换了所有内容。现在22天前,对master的最后一次提交。我们失去了大量的工作。如何在所有分支上回滚git push -f?

2 个答案:

答案 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状态(这仍然是旧的本地版本),这就是为什么我必须拉动远程分支来重置它们。