git log有一些非常有用的提交限制选项,例如--no-merges和--first-parent。在为一系列提交生成累积差异补丁/统计/数字统计时,我希望能够使用这些选项。
使用这些命令:
git log --oneline --first-parent --no-merges --patch 29665b0..0b76a27
git log --oneline --first-parent --no-merges --stat 29665b0..0b76a27
git log --oneline --first-parent --no-merges --numstat 29665b0..0b76a27
Run Code Online (Sandbox Code Playgroud)
差异不是累积的(每个提交的更改单独列出)。
使用这些命令:
git diff --patch 29665b0..0b76a27
git diff --stat 29665b0..0b76a27
git diff --numstat 29665b0..0b76a27
Run Code Online (Sandbox Code Playgroud)
差异是累积的,但不幸的git diff是不支持提交限制选项。
所以我想要的是git diff结合git log.
我的一个想法是用来git log生成一个提交哈希列表,然后以某种方式将该列表通过管道git diff生成指定提交的累积差异。像这样的东西(显然这种管道散列的方法git diff实际上不起作用):
git log --pretty=format:%h --first-parent --no-merges 29665b0..0b76a27 | git diff
Run Code Online (Sandbox Code Playgroud)
其中--pretty=format:%h输出匹配提交的哈希值。 …
我的存储库历史记录如下所示:
x---y-+-z-+-branch
/ / /
---a---b---c-+-d-+-e---master
Run Code Online (Sandbox Code Playgroud)
我想得到一个单独的差异(即,像'git diff'输出 - 我不想要像'git log -p'产生的那一组差异)完整的'branch'历史记录,而不包括任何从'master'合并到'branch'的更改.
我怎样才能做到这一点?