首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Git中恢复一个文件的冲突?

如何在Git中恢复一个文件的冲突?
EN

Stack Overflow用户
提问于 2014-07-10 16:07:06
回答 2查看 64关注 0票数 1

合并后,我解决了部分冲突,但我发现,在当前的冲突中,我保留了错误的代码部分。错误地,这里已经完成了一次提交,而且(不是因为这个原因),在解决这个冲突之前,我不能返回撤销。有什么办法能让我回到以前的冲突中吗?

更详细:

  • 我在file1中解决了三个冲突
  • 我在file2中解决了5次冲突
  • 我在file3中解决了两个冲突,在解决第三个冲突时,我保留了错误的代码部分。我犯了错。如何在file3中恢复到第三次冲突之前,还是重新处理file3中的冲突?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-10 23:02:18

git rerere有时也是一种选择

有几种方法可以解决这个问题。例如,如果您在开始解决冲突之前打开了git rerere,那么您就可以从头开始重新执行合并,并且git rerere自动重新应用您的冲突解决方案

另一种解决办法,只为你

但是,由于您已经提交了更改,所以实际上可以通过使用git checkout <revision> -- <file>重新应用以前的冲突解决方案,其中<revision>是当前合并提交的commit:

代码语言:javascript
复制
# First, let's undo your merge
git reset --hard <previousCommit>

# Next, redo the merge
git merge <branch>

# Next, we'll reapply your previous resolutions
# from the previous merge "PM", for files 1 and 2
git checkout PM -- file1
git checkout PM -- file2

# Next, go ahead and fix the conflicts for file 3...

# When you're done, commit
git commit

解释

命令

代码语言:javascript
复制
git checkout <revision> -- <file>

将检查来自<revision><revision>版本。您可以从正式文件中找到更多有关这方面的文档。

票数 2
EN

Stack Overflow用户

发布于 2014-07-10 19:53:36

这是你能做的。

代码语言:javascript
复制
git reset --hard HEAD~1

这将使您的分支的头指向前一次提交。然后签出分支以获得最新的更改:

代码语言:javascript
复制
git checkout <branch>

然后再进行合并。

代码语言:javascript
复制
git merge <branch>

您可以在下面的链接中找到有关取消合并的详细信息。

代码语言:javascript
复制
http://git-scm.com/blog/2010/03/02/undoing-merges.html
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24681347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档