让我说我的git repo中有以下历史记录:
C (master)
x (origin/master)
B
x
A
x
A,B和C是我感兴趣的提交,而x是其他一些更改(可能超过1次提交)。我想知道提交A,B和C执行了什么结果更改,忽略了其他提交之间的任何其他更改。
是否可以这样做?
答案 0 :(得分:2)
您可以重新定义这些更改以创建一个提交:
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
问题是在rebase期间你可能需要进行一些合并。
答案 1 :(得分:2)
您似乎希望对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
行并压缩其他提交。 E.g。
pick A
squash B
squash C
在rebase完成后,您的HEAD指向仅包含A-B-C
更改的提交。
您可以使用
查看更改git show HEAD
但请记住,您可能会遇到必须解决的冲突。如果例如,这可能发生commit C
取决于您删除的x
次提交之一中引入的更改。提交' B'同样相同。