2011-11-30 108 views
0

哎呀!請原諒錯誤。我混合了蘋果和橘子(兩個不同的項目)。感謝您的答案。它們不會被浪費。如何解決這個混帳錯誤

我在提出這個問題時的全部目的是,我試圖將一個開發目錄轉移到服務器上,然後使用git commit在將來更新服務器。

我從this question特別是Josh Lindsey's answer得到了很好的解決方案。對於我擁有的一個項目來說,它工作得很好,但對於另一個項目,我得到了一些錯誤,並想知道修復它們的最佳方法。

我確實遵循了初始化遠程目錄的說明。

當我從本地目錄發出git push origin master命令時,出現這些錯誤。

[email protected]:~/bin$ git push origin master 
[email protected]'s password: 
To [email protected]:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.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. 
+0

請[不簽名或標語添加到您的帖子]之前做1(http://stackoverflow.com/faq#signatures)。 – meagar

+0

您能指出簽名或標語嗎?我沒有看到它。謝謝。 – octopusgrabbus

+0

它不在那裏,因爲我刪除了它。它*是*「cmn」,貼在你的每一個帖子上。 – meagar

回答

1

取決於你真正想做的事,你除了那些已經被建議其他兩個選項:

  1. git fetch更新遠程分支的狀態,而不自動合併

  2. git push -fgit push --force到你的本地分支推到遠程分支也不管覆蓋的後果,其現有的頭(即使您當地的分行正在過時,因爲相比於它)

通常我會決定是否做2

0

首先,您需要執行git pull以從遠程存儲庫獲取最新更改。這將自動合併(並在解決可能的衝突後),並且您將能夠將代碼推回到遠程。

+0

本地存儲庫是最新的。我將所有我已經完成的所有事情都移到了服務器上的git存儲庫中。 (並且,是的,我是git的新手)。 – octopusgrabbus

+0

@octopusgrabbus:在執行從本地到遠程的推送之前,您是否在服務器上執行了'git init --bare repo_name'? –

+0

我不相信我在最後有repo_name參數。我會去試試看。 – octopusgrabbus

0

當您嘗試推送到遠程回購時,如果您的回購視圖過期,會發生這種情況。其他人推動回購,你當地的git對回購的看法是背後的一個承諾(或少數)。所以這需要git將您的更改合併到遠程倉庫。 Git不想這樣做,因爲這樣做更好。

所以git告訴你做一個拉。這將使您的本地遠程回購視圖保持最新狀態,從而使您能夠徹底將更改推送到其中。這可能需要您合併,這是一個手動/以人爲導向的流程。 Git旨在確保手動/人類類型的東西由人類完成。

TL; DR:做一個git pull,如果需要合併更改,然後再次push。就像錯誤消息指出

+0

基本上,我發佈推送的目錄是最新的。我想讓遙控器成爲新的存儲庫。 (並且,是的,我是git的新手。) – octopusgrabbus

+0

我建議做一個'git fetch',然後做一個'git diff master origin/master',看看有什麼不同。如果差異沒問題,做一個'git pull'然後做'push'' –

+0

我不想合併。我希望本地目錄成爲主人。 – octopusgrabbus