首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在git rebase期间通过hash来识别冲突的提交?

如何在git rebase期间通过hash来识别冲突的提交?
EN

Stack Overflow用户
提问于 2010-01-22 23:40:39
回答 5查看 8.5K关注 0票数 48

当我遇到使用git rebase的合并冲突时,我如何才能从提交方面识别冲突的来源,而不仅仅是文件差异?

在使用git rebase --continue之前,我已经知道如何(基本)使用git mergetoolgit add,但有时文件之间的差异还不够:我想要查看提交日志和提交的差异,这些提交没有应用于工作树。

我在其他问题中读到,如果我使用git mergegit log --merge会显示父提交。当我遇到冲突并被告知fatal: --merge without MERGE_HEAD?时,我还是尝试了一下。

我如何识别有问题的提交?

EN

回答 5

Stack Overflow用户

发布于 2017-01-18 11:21:36

在停止解决冲突的git rebase期间,以下命令将显示冲突的提交(所有提交,而不仅仅是冲突的文件),也就是说,您的提交当前正在新的基础上重放/重新建立,而不管您在哪里:

代码语言:javascript
复制
git show $(< .git/rebase-apply/original-commit)

如果您只想查看特定冲突文件(您正在解决的文件)的冲突,请隔离:

代码语言:javascript
复制
git show $(< .git/rebase-apply/original-commit) -- /path/to/conflicting/file

在这个答案的构建中,没有猫被虐待:)。

票数 11
EN

Stack Overflow用户

发布于 2014-09-03 20:04:53

代码语言:javascript
复制
cat .git/rebase-apply/original-commit

考虑到这一点:

代码语言:javascript
复制
A---B---C---D
     \
      E---F---G

$ git checkout G
$ git rebase D

并且假设在尝试应用F时存在合并冲突:

代码语言:javascript
复制
A---B---C---D--E'--!
     \
      E---F---G

然后original-commit文件将显示F的散列。这是“他们的”版本。

此外,在这种情况下,HEAD (.git/HEAD)将是E‘。这是“我的”版本。HEAD^将是"base“版本。

至少对于git 1.7.9,这是正确的

票数 2
EN

Stack Overflow用户

发布于 2014-12-25 08:31:22

不知道为什么我的情况下没有.git/rebase-apply。对于那些处于相同情况的人,这里是我的变体。

代码语言:javascript
复制
git show $(cat .git/rebase-merge/stopped-sha)

或化名..。

代码语言:javascript
复制
git config --global alias.sp='!git show $(cat .git/rebase-merge/stopped-sha)'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2118364

复制
相关文章

相似问题

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