首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在git rm文件之后;提交--如何从远程分支获取文件?

在git rm文件之后;提交--如何从远程分支获取文件?
EN

Stack Overflow用户
提问于 2011-01-06 09:35:47
回答 1查看 7.1K关注 0票数 8

我正在打开我的.emacs目录,并碰到了以下冲突:

代码语言:javascript
复制
CONFLICT (add/add): Merge conflict in elisp/dired-details+.el

Git状态显示如下:

代码语言:javascript
复制
 Unmerged paths:
 #   (use "git add/rm <file>..." as appropriate to mark resolution)
 #  both added:         elisp/dired-details+.el

好吧,所以git建议使用git rm。我想用我要拉进来的文件完全替换本地文件,所以这似乎有点明智.所以我做git rm elisp/dired-details+.elgit merge。我得到:

git合并:致命:尚未结束合并(MERGE_HEAD存在)。请在合并之前提交您的更改。

好吧,好吧:git commit -a -m "ugh merge conflicts"git pull origin master

现在一切都很好,除了我错过了dired-details+.el,我有点困惑,我想知道以下问题的答案:

如何从远程branch?..

  • Why撤消git-rm并从远程git-rm获取该文件--首先是否存在冲突?对于add/add?..

  • What,我应该做什么而不是用git-rm代替我想替换的文件呢?.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-06 10:46:19

首先,使用git reset --hard HEAD^撤消合并提交。请注意,这将消除最后一次提交,并将您的工作副本重置为上一次提交的状态,因此在执行此操作之前,请注意了解它将做什么。gitk可以帮助可视化这一点。

第二,git rm没有做您在这里所期望的事情。当您有合并冲突时,您将查看处于半合并状态的文件,该文件包含用于解决冲突的冲突标记。此时,您将被要求将工作副本修复到希望最终合并提交看起来类似的状态。通过删除该文件,您告诉git您不希望该文件再次出现,这不是您想要的。

在此阶段,您需要做的是将工作副本中的冲突文件更新为要保留的版本。这通常是通过检查冲突标记并相应地调整文件来完成的。在您的情况下,如果您确实想要从您要合并的分支中获得副本,可以使用git show :3:elisp/dired-details+.el > elisp/dired-details+.el进行此操作。然后git add elisp/dired-details+.el告诉git您已经解决了该文件中的冲突,然后告诉git commit完成。

在这里,git show :3:...从MERGE_HEAD请求文件的版本。如果需要不同的版本,也可以使用1作为共同祖先,也可以使用2作为合并的“您”端。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4613500

复制
相关文章

相似问题

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