在本地仓库执行'git reset --hard HEAD~1'后,Git推送失败

18

我在我的工作站上有一个本地的git仓库,我将其推送到Dropbox位置,以便我可以通过git pull remote dropbox从我的笔记本电脑上拉取。

昨天我在工作站上检查了一个更改,提交并git push dropbox。我没有从我的笔记本电脑上执行git pull,因为我怀疑我最终会扔掉那个提交。

今天我决定放弃那个提交,所以在我的工作站上,我执行了:

git reset --hard HEAD~1

目前为止还不错。现在我想将这个推回到Dropbox,以便在我的笔记本电脑上可以从那里合并和提交。因此,在我的工作站上尝试了以下操作:

git push dropbox

当时git报错如下:

! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '\My Dropbox\dev\repos\xcast.git' 为防止 丢失历史记录,不允许非快进更新。在再次推送前合并远程更改(例如 ` git pull`)。 有关详细信息,请参见“git push --help”中的“有关快进”的注释部分。

如何将我的工作站和Dropbox重新同步?

1个回答

32

强制推送应该可以解决:git push -f dropbox

Git抱怨是因为你的远程仓库还有那个额外的提交,因此在历史记录上你落后于它。


1
这样做会有任何负面影响吗? - John Dibling
@Grunch:是的,你会失去远程提交记录。如果你已经与其他人分享了该提交记录,则历史记录可能会分歧。 - Fred Foo
1
@Grunch 是的,只有在确定没有人已经拉取更改(或者你是唯一有权限的人)时才能强制推送。 - jli
@larsmans:遥控器在我所有的电脑之间共享。自从昨天不幸的提交以来,我没有从远程拉取任何其他机器上的内容。这是否意味着在这种情况下,历史记录不会分歧? - John Dibling
@Grunch 如果他们还没有撤回,你应该没问题。 - jli
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接