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