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

Qix*_*Qix 39 git git-pull git-merge

我工作的一个Git仓库由我(所以是的,我知道的含义,这样的警告),不知怎么的一棵树上了,当它不应该被推后提交.

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

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

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

Wil*_*uta 65

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

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

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

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

  • #3非常聪明.好答案.顺便说一句,欢迎来到StackOverflow.只需注意:使用后引号(`)来表示代码或命令行内容. (5认同)
  • 如果合并不包含任何删除,那么`git checkout --theirs .`似乎有效 (4认同)

小智 6

git reset --hard {remote_repository_name}/{branch_name}
Run Code Online (Sandbox Code Playgroud)

例子:

git reset --hard upstream/branch1
Run Code Online (Sandbox Code Playgroud)

如果你正在使用一个分支,你可以使用上面的代码。但在此之前,你必须设置(上游或起源)到你的本地存储库,

git remote add upstream https://github.com/lakini/example.git
Run Code Online (Sandbox Code Playgroud)

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

同样,我们也可以在远程存储库(源)中工作。

git reset --hard origin/branch1
Run Code Online (Sandbox Code Playgroud)