2011-08-29 109 views
21

當我更改某些文件並嘗試進行推送時,我開始出現'未能推送某些文件'的錯誤。大多數指令都告訴先做git pull。我已經做到了,git說一切都是最新的。任何想法如何解決錯誤?我也開始收到'沒有版本信息'的消息,我不知道這與錯誤有什麼關係。Git:雖然我已經完成了git pull,但未能推送一些文件

git push origin master 
git: /usr/local/lib/libz.so.1: no version information available (required by git) 
Enter passphrase for key '/root/.ssh/id_rsa': 
To [email protected][mydomain].beanstalkapp.com:/repo-git.git 
! [rejected]  master -> master (non-fast forward) 
error: failed to push some refs to '[email protected][mydomain].beanstalkapp.com:/repo-git.git' 
+0

如果克隆在另一個倉庫,會發生什麼位置和tr喲,推動它? – Intrepidd

回答

32

的錯誤是,別人在master分支推,你會覆蓋他們的變化,如果允許git你推(這是什麼non-fast forward錯誤表示)。因此,您需要將您的本地master分支與遠程master分支合併。

如果您在執行git pull而本地分支不是master分支時發生這種情況。如果你只想把你正在工作的分支上,而不是master分支,你需要使用的git-push完整的形式把這件事告訴git

$ git push remote local-branch:remote-branch 
+0

如何合併本地主分支與遠程主分支?無論如何,我注意到與git分支,我正在使用一個分支稱爲(無分支)。 我沒有結帳主,現在我可以做推/拉 – jjei

+1

當你做'git pull'時,它執行'git fetch',後面跟着當前分支正在跟蹤的遠程分支的'git merge'。你可以用'git merge master'手動合併。 –

1

務必確認拉實際工作。合併(這是拉的一部分)可能失敗。

當我有這個錯誤信息,我沒有注意到拉失敗。由於某些未提交的文件更改(與我試圖推送的文件無關)導致合併失敗,導致拉出失敗。我恢復了這些文件更改(因爲它們不重要),然後再次進行了拉取。成功拉動之後,推動工作。

5

最好的可能的答案是對Git的幫助here

與非快速向前錯誤

不時打交道,你可能會同時推提交(git push origin master)到GitHub上遇到此錯誤:

To https://github.com/user/repo.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'https://github.com/user/repo.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不能在不丟失提交的情況下在遠程進行更改,因此拒絕推送。通常,這是由另一個用戶推送到同一分支引起的。

git fetch origin 
git merge origin master 

或者,你可以簡單地使用git拉來同時執行這兩個命令:

您可以通過提取和合並遠程分支解決這個

git pull origin master 

在某些情況下,這錯誤是由於使用像git commit --amendgit rebase這樣的命令在本地進行的破壞性更改而導致的。雖然您可以通過向push命令添加--force來覆蓋遠程,但只有在您確信這是您想要執行的操作時才應該這樣做。強制推送可能會導致已經提取遠程分支的其他用戶出現問題,這被認爲是不好的做法。如有疑問,請勿強行推送。

+0

合併:起源 - 不是我們可以合併的東西 – Makalele

1

此外,將錯誤的分支名稱放入push命令時會發生錯誤。

例如,假設你在一個名爲iss8分支,但是你告訴混帳推到iss3(像我只是做了),你會得到同樣的錯誤。

$ git push origin iss3 
error: src refspec iss3 does not match any. 
error: failed to push some refs to '[email protected]:myuser/myproject.git' 

嗯,檢查狀態:

$ git status 
On branch iss8 
nothing to commit, working directory clean 

哦,你看,我在不同的分支。感謝git不讓我做一些非常愚蠢的事情。

$ git push origin iss8 
Counting objects: 15, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (9/9), done. 
Writing objects: 100% (9/9), 2.62 KiB | 0 bytes/s, done. 
Total 9 (delta 3), reused 0 (delta 0) 
To [email protected]:myuser/myproject.git 
* [new branch]  iss8 -> iss8 
2

確保您的分支不受保護,否則開發人員可以推送被選中。

+3

這是一條評論而不是答案 – STF

0
1) git stash 
2) git pull 
3) git push 

我原來的錯誤:

enter image description here

後 「混帳藏匿」

enter image description here

0

試試這個命令git push -f origin master