2013-01-10 79 views
30

我正在自己的git存储库上工作(所以是的,我知道这样做的含义和警告),并且在某种程度上,其中一棵树在被推它不应该有。解决合并冲突:强制覆盖所有文件

现在我试图撤回,它抱怨数百个合并冲突。

有没有办法将git强制告知覆盖来自远程服务器本地的任何和所有文件?有没有比做git reset --hard HEAD~1更快的方法,然后做拉?

在这个相同的说明,有没有办法做到这一点与简单的合并?我见过的所有东西都建议在合并冲突解决阶段查看每个文件,但有数百个文件是无法手动完成的。

+1

为什么不只是吹走你的沙箱,并再次克隆它呢? – gview

+0

我希望有些事情没有花费太多时间。该项目规模庞大,需要花费大量时间进行克隆。 – Qix

回答

53

有三个简单的解决方案复制的最后一个版本是在你远程仓库,丢弃你在本地的所有更改:

  1. 丢弃你的资料库,并重新克隆。这是最简单的解决方案,但如果你的仓库大,可能需要很长的时间,并可能需要额外的努力就像重新configure ING等与git reset --hard <hash>

  2. 放弃本地更改,然后做一个git pull。问题是你需要首先在你试图避免的变化历史之前找到一个提交。重置为该提交散列后,执行git pull

  3. 做一个git fetch带来更新到远程分支(通常是起源/硕士)的您当地的参考,然后做一个git reset --hard通过这个基准,即git reset --hard origin/master

+4

#3非常聪明。好答案。顺便说一下,欢迎来到StackOverflow。只需要注意一点:使用反引号(')来表示代码或命令行内容。 – Qix

+3

'git checkout - 他们.'似乎工作,如果合并不包括任何删除 –

0
git reset --hard {remote_repository_name}/{branch_name} 

例子:

git reset --hard upstream/branch1 

如果您正在使用一个分支工作,你可以用上面的code.But在这之前,你必须(或上游源)设置为本地资源库,

git remote add upstream https://github.com/lakini/example.git 

这里,https://github.com/lakini/example.git是远程上游存储库。

和我们一样,我们也可以在远程仓库(原产地)工作。

git reset --hard origin/branch1 
+0

这几乎正是其他答案说... – Qix