【发布时间】:2010-12-22 22:06:13
【问题描述】:
如何在git log 的输出中显示分支名称?
例如,git log --graph --all 我对提交有一个很好的概述,但会混淆哪一行是主行,哪一行是我的分支。
【问题讨论】:
-
自最近的
git更新以来,默认情况下似乎已经显示链接头或标签的名称。
标签: git
如何在git log 的输出中显示分支名称?
例如,git log --graph --all 我对提交有一个很好的概述,但会混淆哪一行是主行,哪一行是我的分支。
【问题讨论】:
git 更新以来,默认情况下似乎已经显示链接头或标签的名称。
标签: git
如果您碰巧使用 oh-my-zsh 作为终端,那么可以使用一堆 git 别名。所有这些都可以在他们的 repo oh-my-zsh/plugins/git 中看到。如果您不使用此终端,那么您只需获取别名并将您喜欢的别名粘贴到您自己的环境中即可。
接受的答案是 git log --graph --all --decorate 命令,它在 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
【讨论】:
我一直在寻找与此类似的东西 - 但想知道对哪个分支进行了更改。希望这个答案也对其他人有用。
我正在调查blackbox 加密的风险,当足够多的用户离开项目并且keyrings 目录没有基于大师)
我发现下面的答案在 keyrings 目录未从主目录更新的情况下很有帮助...
基本上添加--source 是我显示分支/标签所需要的。添加--name-only 还会显示实际更改的文件。
cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings
【讨论】:
--source 单独为所有提交提供HEAD。结合--all,这似乎区分了不同的分支,但是显示的信息不是我所期望的:对于我在master中所做的提交,我没有得到refs/heads/master,而是得到了一些私有分支(refs/remotes/origin/… )。我怀疑合并和/或新分支会使Git 丢失历史信息。
--branches --remotes=<pattern> 过滤分支而不是--all,但是一旦两个分支合并在一起,Git 就不再有关于哪个提交的信息完成。
试试装饰选项。
git log --graph --all --decorate
它注释标记或分支指向的提交。
【讨论】:
--pretty,您可以在需要“装饰”的地方使用%d。
git log --graph --all --oneline --decorate 的裁判颜色。我有一个别名git graph,它使用--pretty(为了显示其他内容,例如作者和日期),但%d 并没有给我--decorate 的颜色。我现在所有的 refs 都使用黄色,你知道我怎样才能让 --pretty 的 %d 字符串继承 --decorate 的颜色吗?
--pretty 格式中使用默认颜色,请在应该着色的元素之前添加%C(auto)。例如git log --pretty=format:"%cd %h %cn %s %C(auto)%d"