1. 概述

在软件开发中,Git 是一个不可或缺的版本控制工具,支持多人协作开发、代码变更追踪。它记录了每次修改的详细信息:谁在什么时候做了哪些更改。在实际开发中,我们通常会创建多个分支用于功能开发、Bug 修复、测试隔离等目的。

有时我们需要查询某个分支的创建时间,以了解项目的开发历史和分支生命周期。本文将介绍几种常用方法,帮助你快速定位 Git 分支的创建时间。


2. Git 分支简介

Git 分支本质上是指向某个提交(commit)的轻量级指针。默认主分支通常为 mastermain。当我们创建新分支时,Git 会在当前提交上创建一个新的引用(reference),使我们可以在不影响主分支的前提下进行开发。

分支不仅有助于组织开发流程,还能支持多人协作和功能隔离。我们可以通过 git refloggit loggit for-each-ref 等命令,或者使用 Gitk 工具来查看分支的创建时间。

⚠️ 注意:如果你是从远程拉取的分支,本地记录的创建时间是你拉取该分支的时间,而非原始创建时间。


3. 使用 git reflog 查看分支创建时间

git reflog 记录了所有对分支头(HEAD)的修改历史。通过添加 --date 参数,可以查看分支创建的具体时间。

示例:查看 master 分支创建时间

$ git reflog --date=local master
1b5a4a1 (HEAD -> master) master@{Tue May 14 00:28:26 2024}: commit (initial): 2 files added

输出显示 master 分支是在 Tue May 14 00:28:26 2024 创建的。

示例:查看 delta 分支创建时间

$ git reflog --date=local delta
3de4a09 (delta) delta@{Fri Jun 7 23:52:36 2024}: commit: file1.php added
1b5a4a1 (HEAD -> master) delta@{Fri Jun 7 23:51:49 2024}: branch: Created from master

输出显示 delta 分支是在 Fri Jun 7 23:51:49 2024 创建的。

使用相对时间格式

$ git reflog --date=relative master
1b5a4a1 (HEAD -> master) master@{4 weeks ago}: commit (initial): 2 files added

4. 使用 git log 查看分支创建时间

git log 可以显示提交历史。结合 --walk-reflogs--reverse 参数,我们可以更精确地定位分支创建时间。

4.1 git log --walk-reflogs 查看 reflog 历史

$ git log --walk-reflogs
commit 1b5a4a1816d2ef960dc7aa4a0d79d567ddf246ef (HEAD -> master)
Reflog: HEAD@{0} (Laiba Younas <laiba@example.com>)
Reflog message: checkout: moving from delta to master
Author: Laiba Younas <laiba@example.com>
Date:   Tue May 14 00:28:26 2024 +0500

    2 files added

commit 3de4a0901800185b120458fdc9e288a0210c3ab9 (delta)
Reflog: HEAD@{1} (Laiba Younas <laiba@example.com>)
Reflog message: commit: file1.php added
Author: Laiba Younas <laiba@example.com>
Date:   Fri Jun 7 23:52:36 2024 +0500

    file1.php added

4.2 git log --reverse 查看最早提交

$ git log --reverse master
commit 1b5a4a1816d2ef960dc7aa4a0d79d567ddf246ef (HEAD -> master)
Author: Laiba Younas <laiba@example.com>
Date:   Tue May 14 00:28:26 2024 +0500

    2 files added

⚠️ 注意:最早提交时间不一定等于分支创建时间,但可以作为近似参考。


5. 使用 git for-each-ref 查看所有本地分支创建时间

该命令可以列出所有本地分支及其创建时间。

示例:

$ git for-each-ref --format="%(refname:short) %(creatordate)" refs/heads/
alpha Tue May 14 00:30:10 2024 +0500
beta Tue May 14 00:30:40 2024 +0500
delta Fri Jun 7 23:52:36 2024 +0500
master Tue May 14 00:28:26 2024 +0500

✅ 优点:一次性查看所有本地分支的创建时间。


6. 使用 Gitk 图形界面查看分支创建时间

Gitk 是 Git 提供的一个图形界面工具,支持查看分支、提交历史等信息。

示例命令:

$ gitk --all

执行后会弹出图形界面,显示如下信息:

  • 分支图与最近提交信息(第一列)
  • 作者姓名和邮箱(第二列)
  • 首次提交时间(第三列)

Gitk 分支创建时间截图

⚠️ 注意:Gitk 需要图形环境支持,适合在本地调试时使用。


7. 总结

本文介绍了多种查看 Git 分支创建时间的方法,适用于不同场景:

方法 是否显示创建时间 是否显示所有分支 是否需图形界面 说明
git reflog 显示特定分支的 reflog,包含创建记录
git log --walk-reflogs 查看 reflog 提交历史
git log --reverse ✅(近似) 查看最早提交时间
git for-each-ref 快速查看所有本地分支创建时间
Gitk 图形化查看分支信息,适合调试

✅ 推荐组合使用:git reflog + git for-each-ref,既能查特定分支,也能快速查看所有本地分支创建时间。

如需查看远程分支创建时间,需结合 Git 服务器日志或 CI/CD 系统记录。Git 本身不保存远程分支创建时间。


原始标题:Determine When a Git Branch Was Created