如何解决“git stash apply”引起的“删除/修改”冲突

时间:2012-04-07 16:22:59

标签: git

我最近做了一个git stash,然后在分支上做了一些工作并提交了它,并在尝试git stash apply时遇到了这些错误:

CONFLICT (delete/modify): app/controllers/orders_controller.rb deleted in Updated upstream and modified in Stashed changes. Version Stashed changes of app/controllers/orders_controller.rb left in tree.
CONFLICT (content): Merge conflict in app/models/product.rb

git status显示以下内容:

 $ git status
# On branch develop
# Your branch is ahead of 'origin/develop' by 16 commits.
# Unmerged paths: 
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   deleted by us:      app/controllers/orders_controller.rb
#   both modified:      app/models/product.rb

标记为“删除/修改”的文件是我在stash之前添加但尚未提交的新文件。
我想回到git stash之前的状态 - 有未提交的本地更改。你能建议如何实现这个目标吗?

感谢。

4 个答案:

答案 0 :(得分:8)

你正在把藏匿物弹到另一个州;有一个额外提交的州。更糟糕的是,正如您所知,提交引入了合并冲突。

您有两种选择:

  1. 弹出最新提交并解决冲突
  2. 将存储弹出到之前的提交中。
  3. 听起来像#2就是你想要做的。使用:

        git stash branch new_branch [<stash>]  # <stash> will be the last one if not provided.
    

答案 1 :(得分:1)

这对我有用。

做-

git mergetool

然后将要求您选择已修改或删除的文件或中止操作,然后再做一次-

git mergetool

这将解决合并冲突,您可以隐藏弹出的更改。

答案 2 :(得分:0)

在我看来,git add <file>帮助:

以下是示例https://gist.github.com/SgtPooki/10efd02b066a8704b776

答案 3 :(得分:-1)

您需要解决冲突! 由于您已更新最新的存储库,因此已更改了两个文件,已在最新的存储库中修改了project.rb和orders_controller.rb。同时,您的本地更改(存储)也修改了这两个文件,当您应用它们时,会有冲突。

您需要解决冲突才能应用本地更改。

对于第一个文件,orders_controller.rb 删除最新的仓库,当你推迟以后的提交时,是否要保留它?

对于第二个文件project.rb 你需要解决文件中的冲突。