2011-08-23 70 views
1

爲使重訂normaly我做混帳的正確途徑底墊

$ git checkout branchA 
$ git rebase master 
$ git checkout master 
$ git merge branchA 

確定。

我的問題是與其他回購我的叉子,我添加了三個提交,當我做

git pull --rebase otherRepo master 

得到otherRepo犯和我提交到日誌的負責人,但是當我試圖推

! [rejected]  HEAD -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:juanpabloaj/homebrew.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 push --force 

我可以把我的提交到我的遠程回購,但拉的每一次是一樣的東西,
這是正確的方法嗎?

回答

0

如果從回購拉,然後立即嘗試推,它失敗,「非快進」,然後還有其他事情是怎麼回事。也許別人推動了提交,否則也許你沒有拉扯/推動你的想法。通過強行推進,你正在摧毀歷史,除非你清楚自己在做什麼,否則你可能會在沒有意識到的情況下失去工作。

1
git fetch otherRepo master 
gitk --all 

這樣做,你就可以看到otherRepo/master的確切狀態。這將幫助你弄清楚發生了什麼。 git fetch更新您的視圖 of otherRepo/master(所以你可以看到它的最新狀態),但不會與任何東西合併。

1

你的問題是在這裏:

git pull --rebase otherRepo master 

當您使用git pull --rebase,你對主本地提交的上的otherRepo的掌握新提交的頂部重播。這樣做的結果是,當你推到你的原點時,這將變成一個非快速前進的推動(參見here以解釋快進合併)。所以git在默認情況下不允許這個。

解決方法很簡單,不要從otherRepo拉扯時使用--rebasegit pull

git pull otherRepo master