2012-08-01 87 views
2

我有幾個git存儲庫設置,每次我設置一個新的,我做第一次提交和推,這個命令失敗git push origin master,我得到一些關於它如何失敗的錯誤推動一些裁判。爲什麼我必須 - 強制我的git提交

[email protected] /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它的工作原理,這是爲什麼?爲什麼我必須每次做呢?

+0

看起來您要推送的存儲庫不是空的。每次您強制提交時,都會覆蓋服務器上的任何內容,但不會覆蓋本地PC上的任何內容。我會小心這個。 – knittl 2012-08-01 17:08:51

+0

這就是我所害怕的,但我相信我創建了沒有任何文件的回購協議,並且仍然是。 – iKlsR 2012-08-01 17:10:22

+0

您正在推進github。你真的在github上創建了一個新項目,還是你總是推送到同一個遠程? – knittl 2012-08-01 17:11:33

回答

4

這個錯誤...

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

...意味着遠程儲存有尚未在你的倉庫的變化。如果您要在GitHub上創建存儲庫,那麼如果您要求GitHub預先使用.gitignoreREADME文件填充您的存儲庫,則可以創建一個非空的存儲庫。

在任何情況下,當你看到這個錯誤,而不是使用--force(這將覆蓋在遠程儲存任何更改),你應該只運行:

git pull 

這將降低任何改變和將它們合併到您的本地存儲庫中,此時git push應該可以正常工作。

您還可以將遠程存儲庫克隆到另一個目錄並檢查其內容,如果您不確定其中的內容。

相關問題