git 公共分支中的差异和代码审查

git diff and code review in common branch

我正在使用 git。 假设我们有一个共同的分支,有多个人在工作。 正在进行相当大的更改,比如它有 20 次提交和相当多的行更改。 现在说正在完成的 "change" / "feature" / "fix" 是用提交消息标识的。 所以在 git-log 中,提交看起来像:

TASK-X: Add foo.
TASK-Y: Added rofl.
TASK-X: Added bar.
TASK-X: Added baz.

现在,想象一下更大的规模。想象一下大量的提交是在彼此之间完成的。现在有人告诉我 "Do a code review on TASK X".

我可以很容易地找到所有相关的提交——但是很多提交都包含 "Added debug statements"、"Removed debug statements"、"Fixed a bug in my code" 等内容

逐个提交会很烦人,因为我可能会注意到在稍后(向上提交)提交中已修复的错误,而且我也缺乏完整的提交上下文。

有没有一种方法可以显示任务 X 的 combined/consolidated 提交,但 包括其间完成的所有其他不相关提交?

PS:我知道更好的方法是做功能分支,并强迫人们在合并之前清理他们自己的烂摊子,但我对此无能为力。

您可以根据第一次提交 TASK X 之前的提交创建一个(临时)审查分支

git branch review-TASK_X <first commit for TASK X>^

然后逐一挑选任务 X 的所有提交

git cherry-pick <first commit for TASK X>
git cherry-pick <second commit for TASK X>
....
git cherry-pick <last commit for TASK X>

然后简单地在它的 HEAD 和它的分支点之间区分这个分支

git diff <first commit for TASK X>^