解决合并冲突:强制覆盖所有文件

时间:2013-01-10 03:12:02

标签: git git-merge git-pull

我正在开发一个git存储库由我自己(所以是的,我知道这样做的含义和警告)并且不知何故,其中一棵树在推送之后得到了提交,当它应该'有。。

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

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

在同样的说明中,有没有办法用简单的合并做同样的事情?我见过的所有内容都建议在合并冲突解决阶段检查每个文件,但有数百个文件,手动无法这样做。

2 个答案:

答案 0 :(得分:61)

有三种简单的解决方案可以复制远程存储库中的最新版本,并丢弃您在本地进行的所有更改:

  1. 放弃您的存储库并再次克隆。这是最简单的解决方案,但如果您的存储库很大,则可能需要很长时间,并且可能需要额外的工作,例如重新configure等。

  2. 使用git reset --hard <hash>放弃本地更改,然后执行git pull。问题是您需要首先找到一个提交,该提交先于您要避免的任何更改历史记录。重置为该提交哈希后,请执行git pull

  3. 执行git fetch将更新带到远程分支的本地引用(通常是origin / master),然后执行git reset --hard传递此引用,即git reset --hard origin/master }。

答案 1 :(得分:3)

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

示例:

git reset --hard upstream/branch1

如果您正在使用分支,则可以使用上述代码。但在此之前,您必须将(上游或原始)设置为本地存储库,

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

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

与此类似,我们也可以在远程存储库(origin)中工作。

git reset --hard origin/branch1