不能直接查远程分支“服务器端最后一次推送时间”,git 本身不记录该时间;github/gitlab 显示的“x天前”是平台根据服务器接收推送的时间戳计算得出,git fetch 后通过 git show --format="%ci" origin/branch 获取的是提交对象的作者时间,非推送时间。

不能直接查远程分支“服务器端最后一次推送时间”,git 本身不记录这个;你看到的“两个月前更新”是 GitHub/GitLab 等平台自己算的,不是 git 命令返回的。
git fetch 后用 git show --format="%ci" origin/branch-name 是最准的本地可得时间
远程分支在你本地没有对应跟踪引用时,git show 会失败。必须先运行 git fetch(或 git fetch origin),让 Git 把远程分支最新提交对象拉下来,并更新 origin/xxx 这类远程跟踪分支指针。
-
git show --format="%ci" origin/main输出 ISO 8601 格式时间(如2026-05-07 14:22:31 +0800),这是该分支 tip 提交的作者时间(%ci),通常就是最后更新时间 - 想看提交时间(committer time)就用
%cd,多数情况下和%ci一致,但 rebase/merge 后可能不同 - 如果只想要日期部分,加
--date=short:git show --format="%cd" --date=short origin/feature/login - 注意:这个时间来自提交对象元数据,不是服务器接收推送的时间戳 —— git 不存那个
批量查所有远程分支最后提交时间,用 git branch -r 配合 xargs
手动一个一个敲太慢,尤其当有几十个 origin/xxx 分支时。下面这行命令能一次性列出全部(不含 HEAD 和重复符号引用):
git branch -r | grep -v '\->' | sed 's/origin\///' | xargs -I{} sh -c 'echo {}; git show --format="%ci" origin/{} 2>/dev/null | head -n1'
说明:
使用 `gh` CLI 与 GitHub 交互。通过`gh issue`、`gh pr`、`gh run` 和 `gh api` 管理 issue、PR、CI 运行以及高级查询。
-
grep -v '\->'排掉origin/HEAD -> origin/main这类符号引用,避免重复或报错 -
sed 's/origin\///'去掉前缀,方便后续拼接;也可保留origin/{}直接用,看你习惯 -
2>/dev/null屏蔽 “fatal: ambiguous argument 'origin/xxx': unknown revision” 错误 —— 某些分支可能 fetch 后仍未出现在本地引用中(比如刚被删掉) - 输出格式为每行一个分支名 + 时间,可重定向保存:
./check-remote.sh > remote-last-commit.csv
git log -1 --pretty="%ci" origin/branch 和 git show 效果一样,但更易记
这两个命令对单一分支等价,选哪个纯看顺手:
-
git log -1 --pretty="%ci" origin/feature更符合“查日志”的直觉,参数语义清晰 -
git show --format="%ci" origin/feature更轻量,不触发 log 的分页逻辑,脚本里更稳 - 都依赖
origin/feature已存在(即已fetch过);没 fetch 就跑会报unknown revision - 别用
git log origin/branch --oneline然后肉眼找第一行 —— 如果分支是 merge commit,第一行未必是最新的
GitHub/GitLab 页面显示的“X 天前”不能靠 git 命令还原
平台显示的“两个月前更新”,是它们用服务器收到 push 的时间戳计算的,git 协议根本不传输这个字段。你本地的 git fetch 只拿到 commit 对象及其 author/committer 时间,无法得知服务器何时写入。
- 这意味着:如果你长期不
fetch,看到的“最后更新时间”其实是上次 fetch 时的旧值 - CI/CD 流水线里若要判断分支是否 stale,必须先
git fetch --prune清掉已删除的远程分支,再查 - 某些平台 API(如 GitHub REST API 的
/repos/{owner}/{repo}/branches/{branch})能返回commit.commit.author.date和commit.commit.committer.date,但仍是 commit 元数据,不是推送时间
真正需要“服务器推送时间”的场景,得靠平台 Webhook 或 audit log,git 命令做不到。










