git - 找出 git 分支的创建时间(不是第一次提交到该分支)

标签 git git-branch

我如何知道 git 分支何时创建?

我不想知道第一次提交到那个分支是什么时候。 我想知道那个分支是什么时候创建的。

这是一个重现工作示例的脚本:

#! /bin/bash
set -x
set -e

mkdir test
cd test
git init
echo "hello" >readme
git add readme
git commit -m "initial import"
date

sleep 5
git checkout -b br1
date                   # this is the date that I want to find out.

sleep 5
echo "hello_br1" >readme
git commit -a -m "hello_br1"
date

echo "hello_br1_b" >readme
git commit -a -m "hello_br1_b"

git checkout master
echo "hello_master" >readme
git commit -a -m "hello_master"

git branch -a; 
git log --all --graph --abbrev-commit --decorate --pretty=format:"%h - %an, %ad : %s" --date=iso

执行这个:

./test.sh 
++ set -e
++ mkdir test
++ cd test
++ git init
Initialized empty Git repository in /test_git/test2/.git/
++ echo hello
++ git add readme
++ git commit -m 'initial import'
[master (root-commit) 9b95944] initial import
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 readme
++ date
Fri Aug 16 17:51:24 CEST 2013
++ sleep 5
++ git checkout -b br1
Switched to a new branch 'br1'
++ date
Fri Aug 16 17:51:29 CEST 2013
++ sleep 5
++ echo hello_br1
++ git commit -a -m hello_br1
[br1 6c559cd] hello_br1
 1 files changed, 1 insertions(+), 1 deletions(-)
++ date
Fri Aug 16 17:51:34 CEST 2013
++ echo hello_br1_b
++ git commit -a -m hello_br1_b
[br1 5f0d8ab] hello_br1_b
 1 files changed, 1 insertions(+), 1 deletions(-)
++ git checkout master
Switched to branch 'master'
++ echo hello_master
++ git commit -a -m hello_master
[master 2ed092d] hello_master
 1 files changed, 1 insertions(+), 1 deletions(-)
++ git branch -a
  br1
* master
++ git log --all --graph --abbrev-commit --decorate '--pretty=format:%h - %an, %ad : %s' --date=iso
* 5f0d8ab - David Portabella, 2013-08-16 17:51:34 +0200 : hello_br1_b
* 6c559cd - David Portabella, 2013-08-16 17:51:34 +0200 : hello_br1
| * 2ed092d - David Portabella, 2013-08-16 17:51:34 +0200 : hello_master
|/  
* 9b95944 - David Portabella, 2013-08-16 17:51:24 +0200 : initial import

因此,使用 git log 或 git reflog,我可以找出初始导入的日期 (17:51:24) 和第一次提交到分支 br1 的日期 (17:51:34)。

但我需要找出分支 br1 的创建时间 (17:51:29)。

怎么做?

(奖励问题:而且,它有散列吗?如何知道是谁创建了那个分支)

最佳答案

抱歉,Git 不会保留正式跟踪的分支创建时间信息(这不是在存储库之间存储和共享的数据)。分支只是对提交的引用,仅此而已。这也意味着没有 id 或对象可以指向此数据。

reflog 确实会跟踪何时对分支进行更改,但它只是一个有限的历史记录,会随着时间的推移而过期。它确实记录了一些信息。例如,git branch bar 在 reflog 中产生了这个条目:

:: git reflog show --date=iso bar
7d9b83d bar@{2013-08-16 12:23:28 -0400}: branch: Created from master

我在使用 git checkout -b bar 时也看到了类似的条目:

:: git co -b bar
Switched to a new branch 'bar'
:: git reflog show --date=iso bar
d6970ef bar@{2013-08-16 12:30:50 -0400}: branch: Created from HEAD

因此,根据您的用例以及您需要挖掘多远,git reflog 实际上可能对您有用。

关于git - 找出 git 分支的创建时间(不是第一次提交到该分支),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18277841/

相关文章:

git - 树莓派和 GitLab

android - 无法结帐分支。未找到修订

git - 追溯地将 Git 提交行视为分支

git - 删除分支后丢失所有内容 - 无需提交(工作目录干净)

security - GIT 支持基于分支的用户授权——最佳实践还是工具?

git - 使用单个命令进行分支和 checkout

ios - firebase3在Swift中的集成面临问题

git - 如何依赖GitHub上Maven管理的项目?

git - 在动态 DNS 后面使用 git

git 在分支 merge 后修复主题的正确方法