如何列出提交,因为某些提交?

是否有办法从给定的提交号获取提交列表到HEAD?

我知道这是可能的提交日期,但我需要它的提交号,我似乎找不到任何文档,甚至这是可能的。

100589 次浏览

您可以在shell中执行以下git命令:

git log --pretty=oneline commit-id...HEAD

假设这里的“commit number”指的是提交哈希:

git log <commit-hash>..HEAD
git rev-list <since_hash>..HEAD

或者包含commit:

git rev-list <since_hash>^..HEAD

你也可以使用git log而不是git rev-list来获取更多的细节。

git log <hash>..

是最少的打字量。省略“HEAD”假设这就是你的意思。Rev-list也可以。

如果这里有人试图找出如何通过git log的输出进行LESS,从某个提交开始,向后分页,它就像git log <hash>一样简单。

正如其他人所说,git log <commit-hash>..HEAD让你开始。也建议使用git log <commit-hash>...HEAD。我添加这个答案是因为周期的数量会对差分产生巨大的影响,所以这或许值得理解也是git log

我对它的理解还不足以解释它的git log行为。对于git diff branchA..branchB,两点操作符将branchB尖端上的文件etc与branchA尖端上的文件etc的状态进行比较。三点操作符将branchB的tip上的文件etc与branchB从branchA分离的提交处的branchA中的文件etc进行比较。

对我来说,这种区别可能很重要,因为three-dot可能并不表明合并的某个独立分支已经做出了类似的更改。也就是说,pull请求上的差异可能不会显示一个函数的补丁的当前上下文,如果该函数在分支分叉后发生了变化。

作为题外话,GitHub,隐式地,使用三点比较拉请求。GitHub 企业也使用了three-dot。在写这篇文章时,有一种方法可以看到如何在github中对链接页面进行两个点比较。

hash..HEAD这样的范围似乎不能可靠地按照历史顺序产生结果,而像--author-date-order这样的选项似乎会被忽略。

要获得自给定哈希以来的所有从历史上看提交,我发现这样的东西是唯一正确的解决方案(Bash):

git log --author-date-order --all --reverse --after="$(git show -s --format='%at' COMMIT_HASH)"

只要加上一般情况下的答案,您就可以从一个提交到另一个提交的所有提交。例如,假设__abc0是提交哈希的开始,B是提交哈希的结束

git rev-list <A>..<B>

的详细

git log <A>..<B>