2012-09-13 105 views
6

嘗試推送到Heroku後,我收到了此錯誤消息(複製如下)。我最初設置了一個facebook canvas應用程序,並選擇了heroku選項上的託管。它給了我一個Heroku的URL,這是我加入的,我在我的機器Heroku:'git push -f'後如何「git pull」

heroku git:remote -a desolate-springs-1684 

開發的應用程序的遠程但是,當我推開,我得到這個錯誤

error: failed to push some refs to '[email protected]:desolate-springs-1684.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. 
localhost:nhl michaelmitchell$ 

所以,我沒有

git push -f heroku master 

但現在我顯然不得不做一個'混帳拉'。但是,在'git pull'之後我會放什麼? heroku網址的名稱?或者是其他東西?

回答

18

強制您的git push不是一個好主意,因爲您失去了您或您在工作副本中缺少的其他合作者所做的任何提交。

在推送之前,您應該將上游更改合併或重新綁定到本地工作副本中。

合併更改本地

$ git pull heroku master 
$ git push heroku master 

要在本地重訂的變化

$ git pull --rebase heroku master 
$ git push heroku master 

順便說一句,現在你已經推你的變化,你其實並不需要做任何事情。遠程存儲庫已包含您的所有更改。

如果無論什麼原因,$ git status命令返回過時的參考資料,只需運行

$ git pull heroku 

獲取所有遠程更改。請注意,除非您指定了目標分支(或者您啓用了跟蹤分支),否則git pull將簡單地下載(而不是合併)上游更改。

另外請注意,Heroku不應該被視爲一個git託管。這意味着從Heroku執行git pull是非常罕見的。相反,您應該使用git託管(如GitHub或BitBucket)來存儲您的存儲庫,並只執行推送到Heroku來部署應用程序。

1

該錯誤基本上意味着代碼庫中的代碼比您嘗試推送的代碼更新。

你必須做一個拉和更新自己的工作庫,然後再推,或者只是用力一推

git pull heroku master 

作爲一個側面說明,如果你不熟悉所有的Git命令,我會建議你使用GUI,因爲它可能會使整個過程減少很多。

這裏有很多好客戶:http://git-scm.com/downloads/guis