我正在寻找可以显示给定文件的历史的可能性以及给定提交的分支所在的信息。
给定此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