为什么我必须 - 强制我的git提交

时间:2012-08-01 17:05:39

标签: git git-push

我有几个git存储库设置,每次我设置一个新的,我做第一次提交和推送,此命令失败git push origin master,我得到一些错误,如何它无法推送一些参考。

----@--------- /c/git/repo/---- (master)
$ git push origin master
--------------------------------
--------------------------------
To -----------------------------
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/-----/----.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

然而,如果我做git push --force origin master它有效,为什么会这样,为什么我每次都要这样做?

1 个答案:

答案 0 :(得分:4)

此错误......

 ! [rejected]        master -> master (non-fast-forward)

...表示远程存储库包含尚未存储在存储库中的更改。如果您在GitHub上创建存储库,如果您要求GitHub使用.gitignoreREADME文件预填充您的存储库,则可以创建非空存储库。

在任何情况下,当您看到此错误时,而不是使用--force(它将覆盖远程存储库中的任何更改),您应该只运行:

git pull

这将关闭所有更改并将它们合并到您的本地存储库中,此时git push应该可以正常工作。

如果你不确定那里有什么,你也可以将远程存储库克隆到另一个目录并检查它的内容。