当我遇到使用git rebase
的合并冲突时,我如何才能从提交方面识别冲突的来源,而不仅仅是文件差异?
在使用git rebase --continue
之前,我已经知道如何(基本)使用git mergetool
或git add
,但有时文件之间的差异还不够:我想要查看提交日志和提交的差异,这些提交没有应用于工作树。
我在其他问题中读到,如果我使用git merge
,git log --merge
会显示父提交。当我遇到冲突并被告知fatal: --merge without MERGE_HEAD?
时,我还是尝试了一下。
我如何识别有问题的提交?
发布于 2017-01-18 11:21:36
在停止解决冲突的git rebase
期间,以下命令将显示冲突的提交(所有提交,而不仅仅是冲突的文件),也就是说,您的提交当前正在新的基础上重放/重新建立,而不管您在哪里:
git show $(< .git/rebase-apply/original-commit)
如果您只想查看特定冲突文件(您正在解决的文件)的冲突,请隔离:
git show $(< .git/rebase-apply/original-commit) -- /path/to/conflicting/file
在这个答案的构建中,没有猫被虐待:)。
发布于 2014-09-03 20:04:53
cat .git/rebase-apply/original-commit
考虑到这一点:
A---B---C---D
\
E---F---G
$ git checkout G
$ git rebase D
并且假设在尝试应用F时存在合并冲突:
A---B---C---D--E'--!
\
E---F---G
然后original-commit
文件将显示F的散列。这是“他们的”版本。
此外,在这种情况下,HEAD (.git/HEAD)将是E‘。这是“我的”版本。HEAD^将是"base“版本。
至少对于git 1.7.9,这是正确的
发布于 2014-12-25 08:31:22
不知道为什么我的情况下没有.git/rebase-apply
。对于那些处于相同情况的人,这里是我的变体。
git show $(cat .git/rebase-merge/stopped-sha)
或化名..。
git config --global alias.sp='!git show $(cat .git/rebase-merge/stopped-sha)'
https://stackoverflow.com/questions/2118364
复制相似问题