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

git - get result change from several non consequent commits

假设我的 git 存储库中有以下历史记录:

C (master)
x (origin/master)
B
x
A
x

A、B 和 C 是我感兴趣的提交,而 x 是一些其他更改(可能超过 1 个提交)。我想知道提交 A、B 和 C 执行了哪些结果更改,忽略了其他提交之间所做的任何其他更改。

可以吗?

您可以对这些更改进行变基以创建其中的一个提交:

git rebase -i A^ // QWE^ means parent of QWE

在交互式 reabse 中,您可以将 C、B、A 的提交顺序更改为最上面。您还可以将 B 和 A 设置为 "squash" 或 "fix",这样这些提交将作为一个提交显示。

之后,如果您想查看提交 A+B+C 所做的更改,您只需:

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

问题是在变基期间你可能需要做一些合并。

您似乎想对 A-B-C 中的更改进行代码审查。

我建议先在分离的 HEAD 状态下检出 C,然后再进行 rebase 交互。

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

变基完成后,您的 HEAD 指向仅包含 A-B-C 更改的提交。

您可以使用

查看更改
git show HEAD

但请记住,您可能会遇到必须解决的冲突。如果例如,这可能发生提交 C 取决于您删除的 x 提交之一中引入的更改。提交 'B'.

相同