如何解决来自 `git stash pop` 的子模块的 git 合并冲突
How do I resolve git merge conflicts on a submodule from `git stash pop`
我有一个带有子模块的 git 存储库。我需要弹出我之前隐藏的更改。但是,这会导致子模块引用发生合并冲突。
我想保留我的更改,子模块除外。对于大多数代码文件,我可以通过编辑冲突文件来解决冲突,但这似乎不是子模块的选项。
如何解决合并冲突并仍然从存储中提取我的更改?
$ git stash pop
warning: Failed to merge submodule some-submodule (commits don't follow merge-base)
Auto-merging some-code
Auto-merging some-submodule
CONFLICT (submodule): Merge conflict in some-submodule
$ git status
# On branch some-branch
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: some-code
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: some-submodule
正如 git status
评论所说:git reset HEAD some-submodule
.
顺便说一下,在您仔细检查了您的树和索引是否符合它们应有的状态之后,您可能想要 git stash drop
。 git stash pop
通常会这样做,但在发生冲突时不会这样做。
我一直在寻找更简洁的解决方案,但最终证明编辑存储更简单。 YMMV.
git stash show -v > foo
$EDITOR foo
(remove the fluff you don't want)
git apply < foo
就我而言,只需删除 "Subproject commit" 和相关的差异行即可。
我有一个带有子模块的 git 存储库。我需要弹出我之前隐藏的更改。但是,这会导致子模块引用发生合并冲突。
我想保留我的更改,子模块除外。对于大多数代码文件,我可以通过编辑冲突文件来解决冲突,但这似乎不是子模块的选项。
如何解决合并冲突并仍然从存储中提取我的更改?
$ git stash pop
warning: Failed to merge submodule some-submodule (commits don't follow merge-base)
Auto-merging some-code
Auto-merging some-submodule
CONFLICT (submodule): Merge conflict in some-submodule
$ git status
# On branch some-branch
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: some-code
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: some-submodule
正如 git status
评论所说:git reset HEAD some-submodule
.
顺便说一下,在您仔细检查了您的树和索引是否符合它们应有的状态之后,您可能想要 git stash drop
。 git stash pop
通常会这样做,但在发生冲突时不会这样做。
我一直在寻找更简洁的解决方案,但最终证明编辑存储更简单。 YMMV.
git stash show -v > foo
$EDITOR foo
(remove the fluff you don't want)
git apply < foo
就我而言,只需删除 "Subproject commit" 和相关的差异行即可。