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'.
相同
假设我的 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'.