我正在寻找一种方法来查看提交被推送到远程存储库的日期。使用git log可以看到作者日期和提交日期;但是,这些日期都没有告诉您开发人员何时真正开始将更改推送到主远程存储库。
起初我认为我在寻找的东西根本没有在git中可用,但昨天我发现在log命令中指定日期范围实际上是在它们被推送到主远程仓库的那天过滤了提交。这是一个例子:
假设我在2010年7月1日撰写并向我当地的主分公司提交了一个补丁。但现在是7月28日,我终于开始推动远程主仓库。
然后我执行'Fetch'以确保我的本地origin / master与远程主仓库保持同步。
我通过运行来查看origin / master的日志:
git log --format="format:%H %nAuthor Date: %ad %nCommit Date: %cd %n" origin/master
日志的结果显示,这是在2010年7月1日创作并提交的,即使它刚被推送到远程仓库。
所以我指定了一个日期范围(since..until)
git log --format="format:%H %nAuthor Date: %ad %nCommit Date: %cd %n" origin/master@{"1 hour ago"}..origin/master
令我惊讶的是,git知道这是在过去一小时内被推送到远程存储库,即使它是在几周前创作并发布的。
因此,似乎git保留了提交被推送到repo的日期,我的问题是是否有任何方式来公开该日期,以便我可以看到(例如)最近五次推送到远程存储库? / p>
答案 0 :(得分:3)
不幸的是,@ {“1小时前”}语法会检查相关分支的reflog(在本例中为origin / master)。此reflog对于每个克隆都是唯一的,不会被推送,拉取或克隆。最重要的是,裸存储库的core.logAllRefUpdates的默认值为false,因此典型的“服务器”将不具有可为您提供此信息的reflog。
澄清一下,“1小时前”指的是你取得的时间,而不是当有人推动时
如果在裸仓库中将core.logAllRefUpdates设置为true,则可以cd到它并“git reflog show branch”以回顾每次推送及其包含的内容