我有一个历史悠久的Git项目。我想显示第一次提交。我该怎么做?
jjhzyzn01#
我发现:
git log --reverse
显示从开始提交。
ego6inou2#
git rev-list --max-parents=0 HEAD
(from正如Chris Johnsen所注意到的,--max-parents是在这个答案发布后引入的。)
--max-parents
从技术上讲,可能会有多个根提交。当多个以前独立的历史被合并在一起时,就会发生这种情况。当一个项目通过subtree merge集成时,这是很常见的。在git.git仓库的历史记录图中有6个根提交(Linus的初始提交、gitk、一些初始独立的工具 git-gui、gitweb 和 git-p4 各一个)。在本例中,我们知道e83c516是我们可能感兴趣的提交,它既是最早的提交,也是根提交。在一般情况下就不是那么简单了。假设 libfoo 已经开发了一段时间,并将其历史记录保存在Git存储库中(libfoo.git)。独立地,“bar”项目也在开发中(单位:bar.git),但时间不会像libfoo那么长(在libfoo.git中具有最早日期的提交具有在bar.git中具有最早日期的提交之前的日期)。我决定使用子树合并将 libfoo 合并到他们的项目中。在合并之前,确定bar.git中的“第一次”提交可能是微不足道的(可能只有一个根提交)。然而,在合并之后,有多个根提交,最早的根提交实际上来自 libfoo 的历史记录,而不是“bar”。您可以找到历史DAG的所有根提交,如下所示:
git.git
e83c516
libfoo.git
bar.git
为了记录在案,如果--max-parents不可用,这也可以工作:
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
如果您有一些有用的标记,那么git name-rev可以给予您快速了解历史:
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
xbp102n03#
你可以把你的日志倒过来,直接指向第一个结果。
git log --pretty=oneline --reverse | head -1
qnyhuwrf4#
要查看仅第一次提交的提交哈希:
要查看完整的git log,以及提交消息,仅针对第一次提交:
git log
git log $(git rev-list --max-parents=0 HEAD)
要以相反的顺序查看所有git log消息,从顶部(而不是底部)的第一个提交到底部(而不是顶部)的最后一个(最近的)提交:
1.我是如何学会上面的第一个命令的:[接受的答案]如何显示'git log'的首次提交?(上面的第二个命令是我自己的贡献)1.我了解了git log --reversefrom the most-upvoted answer, by @Nyambaa
vu8f3i0k5#
git log $(git log --pretty=format:%H|tail -1)
k0pti3hp6#
我想这不是最好的方式:
git log --pretty=oneline | wc -l
这会给你一个数字
git log HEAD~<The number minus one>
jxct1oxe7#
git log --format="%h" | tail -1为您提供提交哈希(即0dd89fb),您可以通过执行以下操作将其输入到其他命令中:git diffgit log --format="%h" --after="1 day"| tail -1..HEAD查看前一天的所有提交。
git log --format="%h" | tail -1
0dd89fb
git diff
..HEAD
utugiqy68#
git log --max-parents=0
类似于已接受的答案,但格式更好。
8条答案
按热度按时间jjhzyzn01#
我发现:
显示从开始提交。
ego6inou2#
简短回答
(from正如Chris Johnsen所注意到的,
--max-parents
是在这个答案发布后引入的。)说明
从技术上讲,可能会有多个根提交。当多个以前独立的历史被合并在一起时,就会发生这种情况。当一个项目通过subtree merge集成时,这是很常见的。
在
git.git
仓库的历史记录图中有6个根提交(Linus的初始提交、gitk、一些初始独立的工具 git-gui、gitweb 和 git-p4 各一个)。在本例中,我们知道e83c516
是我们可能感兴趣的提交,它既是最早的提交,也是根提交。在一般情况下就不是那么简单了。
假设 libfoo 已经开发了一段时间,并将其历史记录保存在Git存储库中(
libfoo.git
)。独立地,“bar”项目也在开发中(单位:bar.git
),但时间不会像libfoo那么长(在libfoo.git
中具有最早日期的提交具有在bar.git
中具有最早日期的提交之前的日期)。我决定使用子树合并将 libfoo 合并到他们的项目中。在合并之前,确定bar.git
中的“第一次”提交可能是微不足道的(可能只有一个根提交)。然而,在合并之后,有多个根提交,最早的根提交实际上来自 libfoo 的历史记录,而不是“bar”。您可以找到历史DAG的所有根提交,如下所示:
为了记录在案,如果
--max-parents
不可用,这也可以工作:如果您有一些有用的标记,那么
git name-rev
可以给予您快速了解历史:奖金
经常使用?很难记住?添加git别名以快速访问
现在您只需
xbp102n03#
你可以把你的日志倒过来,直接指向第一个结果。
qnyhuwrf4#
要查看仅第一次提交的提交哈希:
要查看完整的
git log
,以及提交消息,仅针对第一次提交:要以相反的顺序查看所有
git log
消息,从顶部(而不是底部)的第一个提交到底部(而不是顶部)的最后一个(最近的)提交:参考文献:
1.我是如何学会上面的第一个命令的:[接受的答案]如何显示'git log'的首次提交?(上面的第二个命令是我自己的贡献)
1.我了解了
git log --reverse
from the most-upvoted answer, by @Nyambaavu8f3i0k5#
k0pti3hp6#
我想这不是最好的方式:
这会给你一个数字
jxct1oxe7#
git log --format="%h" | tail -1
为您提供提交哈希(即0dd89fb
),您可以通过执行以下操作将其输入到其他命令中:git diff
git log --format="%h" --after="1 day"| tail -1..HEAD
查看前一天的所有提交。utugiqy68#
类似于已接受的答案,但格式更好。