单个版本的git日志

219

我有一个提交c,我想获取该提交的变更集和元信息,而不是其他任何提交。有没有比git log -p c^..c更简单的方法来做到这一点?

4个回答

338
您可以使用show命令:
git show commit_id

1
而git show默認使用HEAD作為commit_id,因此git show本身顯示當前分支中最新的單個提交。 - James Moore

70

Michal Trybus的回答是最简单易懂的。但如果你不想在输出中显示差异,你总是可以采取以下方法:

git log -1 -U c

这将给您提交日志,然后您将对所有git日志记录选项拥有完全控制权,以便进行自动化处理。在您的情况下,您说您想要更改集。实现这一目标最易读的方法是:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

如果你使用的是git版本大于1.8.X,则应该是:

git log --name-status --diff-filter="ACDMRT" -1 -U c

这将给您类似以下结果:
commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

当然,您可以根据需要过滤掉任何事件,并通过传统的git-log命令格式化返回结果,这些命令在这里有详细文档说明。

18
如果你不想要差异(diff),可以使用git show --name-only <sha1>命令! - dbn
23
如果你只是不想要差异,可以使用 git show -s <commit> - moeffju
4
“-1” 是什么作用?在哪里有它的文档记录? - alex
2
@alex 请查看“提交限制”部分下的git help log输出,或者参考https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History#limit_options。`-<number>`可以限制输出的提交数量。 - LarsH
如果您不想要差异,而是要列出更改的文件,则可以使用另一种方法 git show --stat <commit> - B.Z.

19

git log -p c -1 就是做这件事。


7
“-1”是什么意思?它在哪里有记录? - alex
8
@alex: "-1"限制了显示的条目数为给定数目,它是“-n 1”或“--max-number=1”的简写形式,详见此处 - derpasaurus
在 git v2.37.3 上,我的输出与 git show $sha 完全相同。 - ken

1
你可以使用描述信息来过滤更改记录:
git log --grep='part_of_description' -p

git log --grep='part_of_description' 中选择包含“part_of_description”的提交,并使用 -p 显示每个提交的更改集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接