37

有没有办法只显示 Git 中的分支结构?有许多工具以图形方式显示提交,但在我的情况下,列表太长以至于无法看到结构。我猜 git-log 可能是答案,但我找不到任何只显示分支提交的开关。这与“--graph --branches --oneline --all”一起可以解决问题。

编辑:我正在寻找一种在 Ubuntu 中执行此操作的方法。

4

6 回答 6

39

我不确定您所说的“分支结构”是什么意思。
git log可以帮助可视化通过提交创建的分支(请参阅此博客文章):

[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

替代文字

但是,如果您只想要不同的 HEAD 分支,您可以尝试以下方式

heads = !"git log origin/master.. --format='%Cred%h%Creset;%C(yellow)%an%Creset;%H;%Cblue%f%Creset' | git name-rev --stdin --always --name-only | column -t -s';'"

(使用column command, 此处仅用于自上次提交以来的origin/master提交)

注意:Jakub Narębski 建议添加选项 --simplify-by-decoration,请参阅他的答案

于 2010-09-08T11:19:13.417 回答
33

也许您想要的是--simplify-by-decoration选项,请参阅git log文档:

--通过装饰简化

     选择由某个分支或标签引用的提交。

所以它会是

git log --graph --simplify-by-decoration --all

或跟随VonC 回答

git log --graph --simplify-by-decoration \
   --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
   --abbrev-commit --date=relative
于 2010-09-09T22:56:10.230 回答
9

也许我错过了一些东西,但似乎没有人提到过gitk --all

于 2010-11-29T14:24:29.513 回答
6

基本解决方案是:

git log --graph --all

如果你想变得更花哨:

git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"
于 2010-09-08T23:15:40.363 回答
3

gitx如果你在 macOS 上

用于 macOS 或 Windows 的smartgit(但我没有使用过)

git-gui使用本机 git gui(跨平台)

于 2010-09-08T10:56:45.920 回答
2

要获取有关特定分支如何与存储库和远程中的其他分支相关的更多信息,您可以使用git wtfWilliam Morgan 的附加脚本:http: //git-wt-commit.rubyforge.org/

它会生成摘要信息,例如:

$ git wtf
Local branch: master
[x] in sync with remote
Remote branch: origin/master (git@gitorious.org:willgit/mainline.git)
[x] in sync with local

Feature branches:
{ } origin/experimental is NOT merged in (1 commit ahead)
    - some tweaks i'm playing around with [80e5da1]
{ } origin/dont-assume-origin is NOT merged in (1 commit ahead)
    - guess primary remote repo from git config instead of assuming "origin" [23c96f1]

(示例取自上述 URL)。

于 2010-09-08T14:57:00.520 回答