5

我想将 HEAD 指针重置为我之前的提交

$ git reset --hard HEAD~1

HEAD 移至上一个提交,但是,无法推送到我的原始主机

$git push origin master

! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'https://github.com/username/repo.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
    hint: before pushing again.

如何移动指针并告诉 Git 更新更改?

4

2 回答 2

7

默认情况下,Git 不允许您推送历史记录中没有服务器上最新更改的更改。这是为了避免其他人已经拉过你以前的 HEAD 时出现问题;那么你推送一些不是后代的东西将意味着他们需要合并或重新定位到你的新提交。

如果您知道没有其他人在使用您的 repo,或者已经与所有人进行了沟通,那么您可以强制推送您的更改:

git push -f origin master

某些服务器配置为不允许强制更新。如果他们不这样做,您可以通过删除并重新创建分支来解决它:

git push origin :master
git push origin master

但只有在您知道没有其他人的工作基于您的工作时才执行这些操作,或者您可以与每个人沟通并确保他们也正确地重置到其本地存储库中的先前提交。

于 2012-11-12T23:18:38.187 回答
0

您必须告诉 git 强制推送,因为这将丢失远程提交。这是一种安全机制,因此您不会无意中删除工作。这也是一个方便的功能,您只需发出 a git push,所有为跟踪而设置的分支都将在远程更新,但最终会删除某些提交的分支除外。

于 2012-11-13T02:28:30.677 回答