1

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

4

2 回答 2

1

最后一个提交者(每个分支)需要推送他的最后一个提交。并始终使用:

git push -f <remote> <branch>

如果你想强行推动。

于 2013-06-19T08:55:54.940 回答
1

我以某种方式安排了它。

无论如何要撤消 git push -f 吗?帮了我很多

我所做的是使用在 push -f 期间显示的提交引用,看起来像

e658r75...63ehd63 master -> master (forced update)
e23r433...29e23gz dev -> dev(forced update)

我已将我的配置默认设置为在执行任何操作之前仅推送当前分支

git config --global push.default current

然后,对于我覆盖的每个分支,我使用了在“...”之前显示 push -f 的 ref并做了:

git checkout master
git push -f origin e658r75:master
git pull origin master

这会将远程和本地 repos 上的分支设置在 push -f 之前的位置。

请注意,在推送到 ref:branch 之后,我的本地分支不在其 HEAD 状态(这仍然是旧的本地版本),这就是为什么我不得不拉远程分支来重置它们的原因。

于 2013-06-19T09:00:32.890 回答