git-从几个非后续提交中获取结果更改

git-从几个非后续提交中获取结果更改,git,git-commit,Git,Git Commit,假设我在git回购中有以下历史记录: C (master) x (origin/master) B x A x A、 B和C是我感兴趣的提交,而x是其他一些更改(可能不止一个提交)。我想知道提交A、B和C执行了什么样的结果更改,忽略了其间其他提交所做的任何其他更改 可以这样做吗?您可以重新设置这些更改的基础,以创建一个提交: git rebase -i A^ // QWE^ means parent of QWE 在交互式重分配中,您可以更改C、B、A位于顶部的提交顺序。您还可以将B和A设置

假设我在git回购中有以下历史记录:

C (master)
x (origin/master)
B
x
A
x
A、 B和C是我感兴趣的提交,而x是其他一些更改(可能不止一个提交)。我想知道提交A、B和C执行了什么样的结果更改,忽略了其间其他提交所做的任何其他更改


可以这样做吗?

您可以重新设置这些更改的基础,以创建一个提交:

git rebase -i A^ // QWE^ means parent of QWE
在交互式重分配中,您可以更改C、B、A位于顶部的提交顺序。您还可以将B和A设置为“挤压”或“修复”,以便这些提交将作为一次提交可见

之后,如果您想查看提交A+B+C所做的更改,您可以简单地:

git log -p -1 A+B+C // -p means show diff, -1 means show just 1 commit

问题是,在重基期间,您可能必须进行一些合并。

似乎您希望对
a-B-C
中的更改进行代码审查

我建议先在分离的头部状态下签出
C
,然后再进行重基交互

git checkout --detach C
git rebase -i A^
rebase交互式编辑器将向您显示如下内容

pick A
pick x
pick B
pick x
pick C
删除
x
行并挤压其他提交。例如

pick A
squash B
squash C
重新基线完成后,您的头部指向一个只包含
a-B-C
更改的提交

您可以使用

git show HEAD
但请记住,您可能会遇到必须解决的冲突。如果提交
C
取决于您删除的某个
x
提交中引入的更改,则可能发生这种情况。提交“B”也一样