首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git stash错误: git stash弹出并以合并冲突告终

git stash错误: git stash弹出并以合并冲突告终
EN

Stack Overflow用户
提问于 2010-05-16 00:18:54
回答 4查看 130.1K关注 0票数 202

我做了一次git stash pop,结果出现了合并冲突。我从文件系统中删除了这些文件,并执行了如下所示的git checkout,但它认为这些文件仍未合并。然后,我尝试替换这些文件,并一次又一次地执行git checkout,结果相同。我尝试使用-f标志来强制它。任何帮助都将不胜感激!

代码语言:javascript
运行
复制
chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   db/schema.rb
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       unmerged:   app/views/layouts/_choose_patient.html.erb
#       unmerged:   app/views/layouts/_links.html.erb

chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-16 00:56:24

请参阅man git merge (如何解决冲突):

在看到冲突后,您可以做两件事:

  • 决定不合并。您需要做的唯一清理工作是将索引文件重置到头提交到反向2.并清理2.和3.所做的工作树更改。;git-reset --hard可用于此操作。

  • 解决冲突。Git将在工作树中标记冲突。编辑文件到形状和git添加到索引中。使用git提交来敲定交易。

在TRUE MERGE下(看看2.和3.指的是什么):

如果不清楚如何协调更改,则会发生以下情况:

  1. 头指针保持不变。

  1. MERGE_HEAD参考被设置为指向另一个分支头。

在索引文件和工作树中都会更新完全合并的

  1. 路径。

  1. ...

因此:如果您想从工作树中删除隐藏的更改,请使用git reset --hard;如果您只想清理索引并将工作树中的冲突保留为手动合并,请使用git reset

man git stash (OPTIONS,pop)下,您还可以阅读:

应用状态可能会因冲突而失败;在这种情况下,不会将其从存储列表中删除。您需要手动解决冲突,然后手动调用git stash drop。

票数 221
EN

Stack Overflow用户

发布于 2012-05-05 01:10:32

我也遇到过类似的事情。我还不想暂存这些文件,所以我用git add添加了它们,然后就执行了git reset。这基本上只是添加并取消了我的更改,但清除了未合并的路径。

票数 45
EN

Stack Overflow用户

发布于 2015-10-14 01:26:12

如果像我一样,您通常希望用隐藏文件的内容覆盖工作目录的内容,并且仍然存在冲突,那么您需要的是使用git checkout --theirs -- .从根目录解决冲突。

在此之后,您可以使用git reset将所有从索引到工作目录的更改带到工作目录中,因为显然在发生冲突的情况下,对非冲突文件的更改将保留在索引中。

您可能还想在之后运行git stash drop [<stash name>],以清除存储,因为git stash pop不会在发生冲突的情况下删除它。

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

https://stackoverflow.com/questions/2840816

复制
相关文章

相似问题

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