小编典典

git stash 错误:git stash pop 并以合并冲突告终

all

我做了一个git stash pop并以合并冲突告终。我从文件系统中删除了文件并执行了git checkout如下所示的操作,但它认为文件仍未合并。然后我尝试替换文件并git checkout再次执行相同的结果。我尝试用-f标志强制它。任何帮助,将不胜感激!

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

阅读 270

收藏
2022-07-02

共1个答案

小编典典

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

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

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

  • 解决冲突。Git 将标记工作树中的冲突。将文件编辑成形状并将它们添加到索引中。使用 git commit 来达成交易。

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

当如何协调更改不明显时,会发生以下情况:

  1. HEAD 指针保持不变。

  2. MERGE_HEAD ref 设置为指向另一个分支头。

  3. 干净合并的路径在索引文件和工作树中都会更新。

所以:git reset --hard如果您想从工作树中删除存储更改,或者git reset如果您只想清理索引并将工作树中的冲突保留为手动合并,请使用。

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

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

2022-07-02