2011-01-24 120 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