是否可以在 git 日志中枚举提交?
Is it possible to enumerate commits in git log?
我经常需要 squash
将许多小提交变成一个大提交,以便从开发功能分支合并到 master
。所以我
git rebase -i HEAD~X
其中 X 是最新提交压缩的数量。然而,由于我有时要处理几十个提交,我必须在 git log
中手动计算它们,我试图避免这种情况。
有没有办法生成一个 git 类似日志的报告,除了显示提交的 SHA 之外,还会枚举它们 0-n?
你可以这样做
git rebase -i <sha>
(其中 <sha>
是要变基的最后一次提交的父项)
或
git rebase -i <sha>~
(其中 <sha>
是要变基的最后一次提交)。
回到你最初的问题,我认为没有办法做到这一点。因为 SHA 是 git 世界中的第一个 class 公民,并且 ^
和 ~
语法恰好用于返回已知的少量提交。当您不知道提前返回的步骤数时,使用此语法就没有任何意义。因此,我认为 git log
没有任何枚举提交的方法,仅仅是因为我想不出它的任何用例;总是可以使用 SHA。
就是说,当然没有人可以阻止您使用任何外部工具(感谢 Unix)执行 git log --pretty=oneline
和编号行,例如awk
、nl
或任何你喜欢的。
尝试:
$ git log --pretty=format:"%h" @{3}..| nl -v0
0 da15a22
1 64e0e39
2 33fa834
并将 3
替换为自 HEAD
以来所需的提交次数。
我经常需要 squash
将许多小提交变成一个大提交,以便从开发功能分支合并到 master
。所以我
git rebase -i HEAD~X
其中 X 是最新提交压缩的数量。然而,由于我有时要处理几十个提交,我必须在 git log
中手动计算它们,我试图避免这种情况。
有没有办法生成一个 git 类似日志的报告,除了显示提交的 SHA 之外,还会枚举它们 0-n?
你可以这样做
git rebase -i <sha>
(其中 <sha>
是要变基的最后一次提交的父项)
或
git rebase -i <sha>~
(其中 <sha>
是要变基的最后一次提交)。
回到你最初的问题,我认为没有办法做到这一点。因为 SHA 是 git 世界中的第一个 class 公民,并且 ^
和 ~
语法恰好用于返回已知的少量提交。当您不知道提前返回的步骤数时,使用此语法就没有任何意义。因此,我认为 git log
没有任何枚举提交的方法,仅仅是因为我想不出它的任何用例;总是可以使用 SHA。
就是说,当然没有人可以阻止您使用任何外部工具(感谢 Unix)执行 git log --pretty=oneline
和编号行,例如awk
、nl
或任何你喜欢的。
尝试:
$ git log --pretty=format:"%h" @{3}..| nl -v0
0 da15a22
1 64e0e39
2 33fa834
并将 3
替换为自 HEAD
以来所需的提交次数。