我如何在git日志中列出相关的分支

  • 本文关键字:分支 git 日志 git git-log
  • 更新时间 :
  • 英文 :


我正在寻找可以显示给定文件的历史的可能性以及给定提交的分支所在的信息。

给定此git存储库:

$ git log --graph --all --decorate=full --pretty=oneline --abbrev-commit 
* 3b116ab (refs/heads/br2) x
| * 8777a0a (HEAD -> refs/heads/br1, refs/heads/branch) g
| * 9be1f38 d
|/ 
| * 3a30d9c (refs/heads/master) d
| * e678c2f c
|/  
* faa3666 b
* 03ea6ad a

我需要给定文件的历史

$ git log --graph --all --decorate=full --pretty=oneline --abbrev-commit -- a
* 9be1f38 d
| * e678c2f c  
|/  
* faa3666 b
* 03ea6ad a

以及提交的分支在

中的信息
$ git branch -a
* br1
  br2
  branch
  master
$ git branch -a --contains 9be1f38
* br1
  branch
$ git branch -a --contains e678c2f
  master
$ git branch -a --contains faa3666
* br1
  br2
  branch
  master

在一个概述中结合在一起,类似

$ git magical-command
+ refs/heads/br2
| + HEAD -> refs/heads/br1, refs/heads/branch
| * 9be1f38 d
|/ 
| + refs/heads/master
| * e678c2f c
|/  
* faa3666 b
* 03ea6ad a

当然,实际上会有更多的承诺不会更改我的文件" a"。

我认为这可能并不罕见,但我没有找到这样的东西。因此,欢迎任何提示。

您可以得到想要的东西,但是误解需要首先清除,不要跳过以下:提交可以是任何数量提交的祖先,无论您在您的中使用什么名字本地存储库是无关紧要的。分支名称是指历史图中的当前杂物委员会,但它们 strictly local;任何两个存储库中使用的分支名称之间的任何信件都是方便或巧合的问题,昨晚的WIP分支几乎肯定与Sam的WIP分支无关。

您要寻找的命令是

git log --graph --decorate --oneline --ancestry-path --simplify-by-decoration --branches ^9be1f38

和前三个args非常有用,我有

git config --global alias.lgdo '!f(){ git log --graph --decorate --oneline "${@---all}"; }; f'

因此,git lgdo给出了完整的概述,git lgdo @给出了当前的记录历史记录,依此类推。

您的命令将为

git lgdo --ancestry-path --simplify-by-decoration --branches ^9be1f38

最新更新