2011-04-01 21 views
1

我想推到遠程回購,但不斷收到下面的錯誤。如何使用git修復當地過期錯誤?

$ git push 
To [email protected]:/home/user/repos/remoterepo.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:/home/user/repos/remoterepo.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 remote show origin顯示master pushes to master (local out of date)。我肯定它不應該過時,因爲我只從分支中推送。

我有2個問題。

  1. 是否有可能強制本地分支覆蓋遠程?拉動將覆蓋存儲庫中的東西肯定晚些時候的變化。

  2. 這是關於第二次或第三次我有這個問題。我能想到的唯一的事情就是git的本地版本是git version 1.7.3.1.msysgit.0(在Windows上),而遠程版本是git version 1.6.5(Ubuntu Jaunty)。 有可能是不同的git版本可能導致一些腐敗?

+0

發生這種情況後,我推到我的回購...然後[撤消我最後一次提交](http://stackoverflow.com/a/927386/5175709),所以我可以做一些改變。很顯然,我的遙控器是領先的,所以我現在已經強制「推 - 力」 – Honey 2017-04-21 16:44:09

+0

@Honey在下面看到我編輯的答案。 '--force'被認爲是有害的 – eckes 2017-04-22 19:35:44

回答

8
  1. 見下文更新)是的,這是可能的:git push --force。但是,只有當你確信沒有人從最後的push以後才能閱讀回購協議(請參閱How do I push amended commit to the remote Git repository?進行深入討論),才能做到這一點。
  2. 對我而言,看起來更像是先要git pull,然後才能夠push。我不認爲這是一個時間相關的錯誤。該消息表明服務器上有更新的提交(通過其提交散列標識,而不是提交日期)...要查看更改的內容,請執行git fetch而不是git pull,然後使用git log origin/master查看更改...

更新:在此期間,push瞭解到--force-with-lease選項,確保你不小心打破東西:https://developer.atlassian.com/blog/2015/04/force-with-lease/。儘可能優先於--force

+0

謝謝,這項工作就像一個魅力 – 2017-02-07 09:02:05

相關問題