gpt4 book ai didi

git - 查找 git 分支的年龄

转载 作者:太空狗 更新时间:2023-10-29 13:10:19 25 4
gpt4 key购买 nike

比方说我有master 已 merge 到 g1 中,分支 g1 已 merge 到 master 中。

git merge master -m "#3 git merge master to g1"

git merge g1 -m "#3 git merge g1 to master"

...
...

git branch -r -v

>

origin/g1 8b535b9 #3 git merge master to g1

origin/master a335421 A comment

origin/newbranch 626a6d2 branch example

有什么方法可以让我看到分支创建的顺序、分支开始时的时间戳或 SHA?或者以某种方式找到哪个分支起源于另一个分支?除了我知道师父是我最年长的名字之外。

最佳答案

如果您对 创建分支(在您的本地 存储库中)感兴趣,并且该分支是不久前创建的(不到 90 天) ago with default settings),您可以在其reflog中查看创建事件。

$ head -1 .git/logs/refs/heads/<branch_name> 
000000... 4a28f1... J Hacker <joe@example.com> \
1400885439 +0200 branch: Created from HEAD

此处 SHA-1 标识符被缩短以提高可读性,并且该行显示为断开 - 在实际输出中它是一长行。

这里的时间是 UNIX 时间戳(自纪元以来的秒数)加上数字时区。您可以使用 date 将其转换为人类可读的输出,例如:

$ date --date=@1400885439 --rfc-2822 
Sat, 24 May 2014 00:50:39 +0200
$ TZ=GMT-2 date --date=@1400885439 --rfc-2822
Sat, 24 May 2014 00:50:39 +0200

不幸的是,从 git 版本 2.2.1 开始,reflog 日期没有漂亮的格式。下面是迄今为止所有与 reflog 相关的漂亮格式:

  • '%gD': reflog selector, e.g., refs/stash@{1}
  • '%gd': shortened reflog selector, e.g., stash@{1}
  • '%gn': reflog identity name
  • '%gN': reflog identity name (respecting .mailmap, see
  • '%ge': reflog identity email
  • '%gE': reflog identity email (respecting .mailmap, see
  • '%gs': reflog subject


如果您对其他人 创建的分支感兴趣,那么情况要困难得多。

首先,您只能找到分支从中 fork 的提交及其提交日期;该分支可以稍后创建。正如@Jubobs 在评论中所写,除了 reflog(严格来说是本地的)之外,Git 不记录分支的创建日期。

其次,您还需要知道相关分支被 fork 出的分支(或一组分支);如果分支 foo 在分支 bar 的提交 A 分支,并且分支 bar 时,存储库看起来完全相同在分支 foo 的提交 A 处 fork (本地 reflog 信息除外)。

假设所讨论的分支是从以下集成分支之一派生出来的主题分支:maintmasternext,我们可以使用git merge-base --all 找到共同的祖先,然后 git show 以适当的格式找到提交日期,如 Mykola Gurov answer以下。例如:

$ echo maint master next |
while read -d ' ' branch; do
git merge-base --all $branch <branch_name>;
done | sort | uniq |
xargs git show -s --format=format:%ci

关于git - 查找 git 分支的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28109111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com