如何在git日志的输出中显示分支的名称?
例如,git log, graph,我得到了一个很好的提交概述,但搞不清楚哪行是主行,哪行是分支。
如何在git日志的输出中显示分支的名称?
例如,git log, graph,我得到了一个很好的提交概述,但搞不清楚哪行是主行,哪行是分支。
当前回答
你可以这样做:
git log --decorate --oneline --pretty='%h refs: %d message:%s'
注意,并非所有提交都有对分支或标记的引用。为此,您需要一个更复杂的“管道”方法。
其他回答
试试装饰。
git log --graph --all --decorate
它注释由标记或分支指向的提交。
你可以这样做:
git log --decorate --oneline --pretty='%h refs: %d message:%s'
注意,并非所有提交都有对分支或标记的引用。为此,您需要一个更复杂的“管道”方法。
这是一个旧的帖子,但是发布的答案实际上并没有显示每次提交的分支名称——它们只显示最近一次提交的分支名称。要列出每次提交的分支名称,使用git show-branch命令。例如:
$ git show-branch --all --more
! [Branch_Feature_1] Commit Msg: Feature_1, Commit #1
! [Branch_Feature_2] Commit Msg: Feature_2, Commit #2
! [Branch_Feature_3] Commit Msg: Feature_3, Commit #1
* [master] Merge branch 'Branch_Feature_3' Commit Msg: Merge Master Commit #2 + Feature_3
----
- [master] Merge branch 'Branch_Feature_3' Commit Msg: Merge Master Commit #2 + Feature_3
+* [Branch_Feature_3] Commit Msg: Feature_3, Commit #1
* [master^] Commit Msg: Master, Commit #2
++* [Branch_Feature_2] Commit Msg: Feature_2, Commit #2
++* [Branch_Feature_2^] Commit Msg: Feature_2, Commit #1
+++* [Branch_Feature_1] Commit Msg: Feature_1, Commit #1
+++* [Branch_Feature_1^] Master_Commit_Msg: Original file
为了明确每个工具显示的内容,我用“Branch_”前缀命名所有分支,并用“commit Msg”标记所有提交消息。
在这个例子中有四个分支,Master和Branch_Feature_1到Branch_Feature_3。Branch_Feature_1有一次提交,Branch_Feature_2有两次提交。两者都是通过快进合并进行合并的。Feature_3有一次提交,并通过非ff合并合并,因为在Feature_3分支后有一次提交到master。
“----”上面的行显示了每个分支加上master的最近提交,即每个分支的顶端。在master之前加上前缀的“*”表示它是当前活动的分支。所有其他分支的“!”前缀表明它们不是活动的分支。
“----”下面的行显示了每个分支的所有提交。“-”前缀表示合并。“+”和“*”前缀表示在“----”上面显示的哪个分支上出现了哪些提交。注意这些列是如何排列的。“*”和“+”只是表示哪些是活动分支,哪些不是。
将此与相同存储库的git日志输出进行比较:
git log --oneline --graph --all --parents
* 2d142e7 fd4f402 9eb9513 (master) Merge branch 'Branch_Feature_3' Commit Msg: Merge Master Commit #2 + Feature_3
|\
| * 9eb9513 c9bb4db (HEAD -> Branch_Feature_3) Commit Msg: Feature_3, Commit #1
* | fd4f402 c9bb4db Commit Msg: Master, Commit #2
|/
* c9bb4db a470d38 (Branch_Feature_2) Commit Msg: Feature_2, Commit #2
* a470d38 f3fde4d Commit Msg: Feature_2, Commit #1
* f3fde4d 81753a3 (Branch_Feature_1) Commit Msg: Feature_1, Commit #1
* 81753a3 Master_Commit_Msg: Original file
请注意git日志如何仅显示每个分支在当前HEAD上提交的分支名称。树符号表示哪些提交在哪些分支上,但我发现git的show-branch输出在显示关系方面要好得多。
注意,如果你更喜欢看到SHA-1值而不是简写引用,请添加——sha1-name:
! [Branch_Feature_1] Commit Msg: Feature_1, Commit #1
! [Branch_Feature_2] Commit Msg: Feature_2, Commit #2
* [Branch_Feature_3] Commit Msg: Feature_3, Commit #1
! [master] Merge branch 'Branch_Feature_3' Commit Msg: Merge Master Commit #2 + Feature_3
----
- [2d142e7] Merge branch 'Branch_Feature_3' Commit Msg: Merge Master Commit #2 + Feature_3
*+ [9eb9513] Commit Msg: Feature_3, Commit #1
+ [fd4f402] Commit Msg: Master, Commit #2
+*+ [c9bb4db] Commit Msg: Feature_2, Commit #2
+*+ [a470d38] Commit Msg: Feature_2, Commit #1
++*+ [f3fde4d] Commit Msg: Feature_1, Commit #1
我正在寻找与此类似的东西-但想知道更改了哪个分支。希望这个答案对其他人也有用。
我正在调查黑盒加密的风险,其中回购和它的分支/标签可能对当前管理员不可用,当足够多的用户离开一个项目时,keyrings目录没有基于master)
我发现下面的答案是有帮助的keyrings目录没有从master更新…
基本上添加——source就是我需要显示分支/标签的东西。添加——name-only还将显示实际更改的文件。
cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings
另一个有用的答案:如何显示git日志与分支名称
如果您碰巧使用oh-my-zsh作为您的终端,那么可以使用一堆git别名。所有这些都可以在他们的repo oh-my-zsh/plugins/git中看到。如果您不使用这个终端,那么您只需获取别名并将喜欢的别名粘贴到您自己的环境中。
接受的答案是git log——graph——all——decoration命令,该命令在oh-my-zsh中作为glgga的别名可用。
就我个人而言,我更喜欢glods的别名,翻译过来是:
git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short