跨越所有分支(包括远程)的Git日志范围。

20

我正在尝试以下操作

git log --before {2.days.ago} --after {14.days.ago} --all --stat

但它似乎只给我一个远程分支的日志。我想获取远程和本地分支的日志。

2个回答

15
git log --before {2.days.ago} --after {14.days.ago} --all --stat --branches=* --remotes=*

谢谢。--branches=* 似乎是包括所有“离线”或超前于当前 HEAD 的分支的唯一方法。 - A.Robert
1
你能解释一下 --all--branches=*--remotes=* 是什么意思吗?以及 --all 是否多余?我看了一下 https://git-scm.com/docs/git-log ,但是有点难读,并且在 "EXAMPLES" 部分没有给出如何列出包括本地和远程所有提交的提交记录的示例,甚至没有一个使用 --all 的示例。 - Andrew Grimm
不是很确定它的作用,因为我只是在原来提问者的问题上进行了构建,但从我的理解来看,它与提交可能已经由于 git reset HEAD~1 或类似操作而“丢失”有关,其中提交仅存在于 reflog 中,而不再实际上是一个分支。 - jakeonrails
1
这个答案是误导性的,“--all”意味着“--branches=*”和“--remotes=*”。 - CervEd

10
你能解释一下--all、--branches=*和--remotes=*的作用是什么,以及--all是否多余吗?
git rev-listgit rev-parse中所述,--all包括--branches--remotes
--all

显示在refs/目录下找到的所有引用。
--branches[=pattern]
--tags[=pattern]
--remotes[=pattern]

显示所有分支、标签或远程跟踪分支(即在refs/headsrefs/tagsrefs/remotes中找到的引用)。如果提供了一个模式,则只显示与给定shell glob匹配的引用。如果模式不包含通配符(?*[),则通过附加/*将其转换为前缀匹配。详见t/t6018-rev-list-glob.sh#L136-L138
test_expect_success 'rev-parse --exclude with --all' '
    compare rev-parse "--exclude=refs/remotes/* --all" "--branches --tags"
'

由于需要远程分支,因此这应该足够了:

git log --before {2.days.ago} --after {14.days.ago} --stat --branches --remotes

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