如何知道"git log"提交属于哪个分支?

Tow*_*wer 41 git

如果我这样做git log,是否有任何参数我可以指定从输出中告诉每个提交属于哪个分支?

编辑:澄清一下,我知道提交可能是两个分支的一部分(例如).我想要的是获取提交log所属的最新分支.所以,如果我做了一个叫分支foomaster.它将属于两个分支,但我想得到foo.

Mar*_*air 63

我认为你正在寻找的是非常有用的命令:

git branch -a --contains <SHA1sum-of-commit>
Run Code Online (Sandbox Code Playgroud)

...它将告诉您包含该提交的每个分支(本地和远程跟踪).

不幸的是,我认为没有一个git log选项可以为每次提交输出这个.使用--all --source是关闭的,但只会显示每个提交的一个分支.但是,如果单击提交gitk --all,您将看到它列出了该提交所在的每个分支.

然而,你的问题的一部分定义不明确 - 你问:

我想要的是获取日志中的提交所属的最新分支

我不清楚你的意思是什么 - "最近的分支"可能是(a)最近创建的ref(b)最近修改的ref(c)最近提交的分支,等等.在提交图方面,可能有更好的方法来定义你想要的东西.


Luw*_*uwe 23

有了git log你已经得到当前分支的所有提交你的.

如果要查看合并分支的提交,可以使用

$ git log --pretty=oneline --graph
Run Code Online (Sandbox Code Playgroud)

要创建日志树并查看提交源自哪些合并分支.

--graph将生成提交树,并 --pretty=oneline为每个提交创建一行可视化

要将分支(作为引用)添加到日志:

$ git log --all --source --pretty=oneline --graph
Run Code Online (Sandbox Code Playgroud)

要显示具有提交的分支:

$ git show-branch
Run Code Online (Sandbox Code Playgroud)


hol*_*eek 8

你有没有试过git log的"--decorate"选项?

我的.gitconfig中有这个别名:

[alias]
        k = log --graph --oneline --abbrev-commit  --decorate
Run Code Online (Sandbox Code Playgroud)

它显示了与gitk显示的图形类似的图形,除了分支中最近的提交之外,分支名称"装饰".