Answers:
git rev-list --max-parents=0 HEAD
(摘自tiho的评论。正如克里斯·约翰森(Chris Johnsen)所注意到的那样,--max-parents在发布此答案后进行了介绍。)
从技术上讲,可能有多个根提交。当多个先前独立的历史合并在一起时,就会发生这种情况。通过子树合并来集成项目是很常见的。
该git.git存储库在其历史记录图中有六个根提交(每个用于Linus的初始提交gitk,一个最初用于单独的工具git-gui,gitweb和git-p4)。在这种情况下,我们知道这e83c516是我们可能感兴趣的那个。它既是最早的提交,也是根提交。
在一般情况下,它并不是那么简单。
想象一下libfoo已经开发了一段时间,并将其历史记录保存在Git存储库(libfoo.git)中。独立地,“ bar”项目也正在开发中(在中bar.git),但libfoo的开发时间不长(最早的提交日期在libfoo.git之前,最早的提交日期在中bar.git)。在某个时候,“ bar”的开发人员决定通过使用子树合并将libfoo合并到他们的项目中。在合并之前,确定“第一个”提交bar.git(可能只有一个根提交)可能很简单。但是,合并之后,会有多个根提交,而最早的根提交实际上来自libfoo的历史,而不是“酒吧”。
您可以找到历史记录DAG的所有根提交,如下所示:
git rev-list --max-parents=0 HEAD
作为记录,如果--max-parents没有,这也可以工作:
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
如果您有有用的标签,则git name-rev可以快速浏览一下历史记录:
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$" | git name-rev --stdin
经常使用这个吗?很难记住?添加git别名以快速访问
git config --global alias.first "rev-list --max-parents=0 HEAD"
现在您可以做
git first
git rev-list --max-parents=0 HEAD会做同样的事情,并且会更简单。
我找到:
git log --reverse
从开始显示提交。
git log --reverse -5是,--reverse由于某种原因它忽略了
您可以反转日志,然后将其保存在第一个结果中。
git log --pretty=oneline --reverse | head -1
git log --reverse反转历史记录,因此您必须使用head -1而不是进行tail -1第一次提交。
-n在--reverse给定git时不忽略该标志。
git log --format="%h" | tail -10dd89fb通过执行类似的操作,为您提供提交哈希(即),您可以将其提交给其他命令
git diff `git log --format="%h" --after="1 day"| tail -1`..HEAD 查看最后一天的所有提交。
git log -1。