2011-01-24 30 views
207

我試圖從我的GitHub倉庫中將代碼拖到我的服務器上,但由於合併衝突,pull仍然失敗。我不想保留自上次拉出後本地服務器上可能發生的任何更改。從Git遠程撥號時使用遠程更改來解決衝突

那麼有沒有一種方法可以強制Git覆蓋GitHub中的任何版本,而不是打擾我衝突?

+0

重複? http://stackoverflow.com/questions/4779715/error-when-running-git-pull-origin-master/4779723#4779723 – 2011-01-24 17:44:08

+3

@nvm:不。這是關於真正的合併衝突,而不是未覆蓋的文件。 – Cascabel 2011-01-24 21:32:57

回答

354

如果你真的想放棄提交你已經在本地完成,也就是說永遠不會再有歷史記錄,你不會問如​​何拉拉意味着合併,而且你不需要合併。所有你需要做的是:

# fetch from the default remote, origin 
git fetch 
# reset your current branch (master) to origin's master 
git reset --hard origin/master 

我個人建議創建你目前的頭先備份分支,所以,如果你意識到這是一個壞主意,你還沒有失去它的軌道。

如果在另一方面,你想保持這些提交併使它看起來好像你原產合併,導致合併,以保持僅從起源的版本,你可以使用ours合併策略:

# fetch from the default remote, origin 
git fetch 
# create a branch at your current master 
git branch old-master 
# reset to origin's master 
git reset --hard origin/master 
# merge your old master, keeping "our" (origin/master's) content 
git merge -s ours old-master 
82

您可以使用nvm指向的重複鏈接中的答案。

或者你也可以解決通過使用他們的更改衝突(如果他們不與遠程版本衝突,但有些更改,可能會保留):

git pull -s recursive -X theirs 
+2

似乎沒有爲我工作。使用git git version 1.5.6.5得到「error:unknown switch`X'」。我是否需要升級到不穩定的版本? – 2011-01-24 18:52:02