2012-05-30 57 views
0

我試圖推動本地更改:混帳推--force到遠程服務器失敗

git push all 

「全」是指在GitHub和遠程服務器回購 - 在我的.git /配置:

[remote "all"] 
    url = [email protected]:...myrepo.git 
    url = ssh://[email protected]/myrepo.git/ 

原本它被假定沒有什麼應該在服務器上手動更改,但最終確實發生了。但是服務器上的更改是非實質性的,我想覆蓋它們以具有本地回購的完全副本。所以,現在我不能推到遠程服務器獲取一個錯誤:

remote: error: Your local changes to the following files would be overwritten by merge: 
remote: Please, commit your changes or stash them before you can merge. 

我所知以前的答案類似的問題,但遺憾的是「混帳推起源--force所有」不工作,拋同樣的錯誤

請幫忙!提前致謝!

回答

1

好吧,它是非常有意義的。您的網絡上的遠程設備不是空閒的。也就是說,你在工作;它有它自己的工作目錄。事實上,你試圖推送到的分支目前正在檢出。要添加,您還有一些尚未提交的修改。 Git會拒絕在那裏改變你的改變。

正確的工作流程是從遠程獲取更改。

但是,你也可以

  • 通過檢查特定的承諾,而不是一個分支,在遠程回購得到一個無頭的狀態。
  • 使它成爲一個裸倉庫,如果它真的是其他人將要使用它或CI服務器將要查詢的中央倉庫。這是通過git clone --bare完成的。
+0

拉上服務器工作,非常感謝您的幫助! – funkifunki

+1

git fetch更安全.. –

+0

順便說一句,我決定再次清理,所以,我從github上'git clone --bare'。一切似乎都沒有問題,直到下面的推到appsrv讓我感到吃驚:「無法打開.git/FETCH_HEAD:權限被拒絕」。我應該給寫入訪問.git?我不認爲這是好的..此外,我以前沒有這樣做,這不是一個問題.. – funkifunki

0

請參閱push的手冊頁。

您不能有一個遠程代表多個倉庫。添加「github」和「網絡」作爲單獨的遙控器。在最後一個推送示例中,「all」被視爲分支名稱!

語法是git push remote-name branch-name:remote-branch-name其中remote-branch-name暗示如果它和冒號被省略。

然後,您將使用push命令的--all選項推送到github和網絡遙控器。

git push --all 

在爲所有想要推送到的地方設置單獨的遙控器後,這將有意義。

+0

感謝您的答案,但不幸的是它沒有工作((我得到了同樣的錯誤:「您對本地的下列文件的更改將被覆蓋...」 – funkifunki

+0

您是否添加了2個遙控器並刪除了「all」remote?does git push github somebranch' work? –

+0

是的,我在config中配置了兩個單獨的[remotes]:'[remote'github']''''remote「appsrv」',現在只有一個分支,所以'git push github'完美運行(好吧,'git push github master'),但'git push -f appsrv'(或'git push --all')拋出該錯誤。 – funkifunki

相關問題