以树状方式输出git分支

以树状方式输出git分支,git,Git,现在,当我输入“git branch” 它以任意顺序列出我的分支 如果“git branch”以树状形式列出我的输出,我更愿意这样做,比如: master |-- foo |-- foo1 |-- foo2 |-- bar |-- bar4 在这里,foo&bar是从master分支出来的;foo1和foo2由foo分支而来;bar4由bar分支而来 这容易做到吗 [仅限命令行实用程序。这需要适合我的zsh/vim工作流。]使用: 我在2009年用“”提到了类似的方法: 但我一直在

现在,当我输入“git branch”

它以任意顺序列出我的分支

如果“git branch”以树状形式列出我的输出,我更愿意这样做,比如:

master
|-- foo
  |-- foo1
  |-- foo2
|-- bar
  |-- bar4
在这里,foo&bar是从master分支出来的;foo1和foo2由foo分支而来;bar4由bar分支而来

这容易做到吗

[仅限命令行实用程序。这需要适合我的zsh/vim工作流。]

使用:

我在2009年用“”提到了类似的方法:

但我一直在使用的完整版本在“”(2011)中:

默认情况下,分支及其提交按相反的时间顺序显示。
此选项使它们按拓扑顺序显示(即,子体提交显示在其父体之前)

但是这个工具可以。例如:

$ git wtf
Local branch: master
[ ] NOT in sync with remote (needs push)
    - Add before-search hook, for shortcuts for custom search queries. [4430d1b] (edwardzyang@...; 7 days ago)
Remote branch: origin/master (git@gitorious.org:sup/mainline.git)
[x] in sync with local

Feature branches:
{ } origin/release-0.8.1 is NOT merged in (1 commit ahead)
    - bump to 0.8.1 [dab43fb] (wmorgan-sup@...; 2 days ago)
[ ] labels-before-subj is NOT merged in (1 commit ahead)
    - put labels before subject in thread index view [790b64d] (marka@...; 4 weeks ago)
{x} origin/enclosed-message-display-tweaks merged in
(x) experiment merged in (only locally)

NOTE: working directory contains modified files
git-wtf
向您展示:

  • 分支机构与远程回购(如果是跟踪分支机构)的关系
  • 分支与非功能(“版本”)分支(如果是功能分支)的关系
  • 分支与功能分支的关系(如果是版本分支)

您可以使用一个名为
gitk

的工具,它不是您想要的,但是

git log --graph --simplify-by-decoration --pretty=format:'%d' --all
做得很好。它还显示标记和远程分支。这可能不是每个人都想要的,但我发现它很有用<代码>--通过装饰简化是此处限制所示参考的一大技巧

我使用类似的命令查看日志。我已经能够用它完全取代我的
gitk
用法:

git log --graph --oneline --decorate --all
我通过在~/.gitconfig文件中包含这些别名来使用它:

[alias]
    l = log --graph --oneline --decorate
    ll = log --graph --oneline --decorate --branches --tags
    lll = log --graph --oneline --decorate --all

编辑:更新了建议的日志命令/别名以使用更简单的选项标志。

以下示例还显示了提交父级:

git log --graph --all \
--format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) <%an>%C(bold yellow)%d%Creset'
git日志--graph--all\
--格式=“%C(青色调)%p%Cred%h%C(白色调)%s%Cgreen(%cr)%C(青色调)%C(粗体黄色)%d%Creset”
要在树状视图中显示所有分支(包括远程分支),请执行以下操作: 使用git show tree

在Ubuntu上测试:

#安装它
sudo-apt安装git-extras
#运行它:
git显示树
#或者(同样的事情)
git显示树
这产生了一种类似于这里投票最多的两个答案的效果

资料来源:

示例:

mangit show tree
显示以下示例:

示例

将所有分支的提交历史记录日志输出为树状图:

*4b57684(负责人,开发)合并分支上游主节点。
|\
|*515e94a合并拉取请求#128来自nickl-/git extras html超链接
| |\
||*815db8b(nickl/git extras html超链接,git extras html超链接)帮助ronn制作超链接。
|*| 7398d10(nickl/develop)修复#127 git ignore不会添加重复项。
| |/
||*ab72c1e(参考/隐藏)开发时的在制品:5e943f5修复| 127 git ignore不会添加重复项。
| |/
|/|
*| 730ca89(bolshakov)将bolshakov与master重新固定
|/
*60f8371(原点/主机,原点/主机,主机)合并拉取请求#126来自agrimaldi/fix changelog最后一个标记
*9627780(标签:1.7.0)1.7.0版
*2e53ff6(标签:1.6.0)版本1.6.0
*bbd32d8(标签:1.5.1)版本1.5.1
|*6b6b758(nickl/gh页面,gh页面)向gh页面添加git附加示例
|*19cfd11(原始页/gh页)索引页
||*881a70e(标签:1.5.0)发行版1.5.0
| |/
|/|
*| 4db5ee0(标签:1.4.0)第1.4.0版
*| 9b0bc89(标签:1.3.0)版本1.3.0
*| be49961(标签:1.2.0)1.2.0版
*| c1d2dfc(标签:1.1.0)1.1.0版
*| 4a56adb(标签:1.0.0)发行版1.0.0
*| 948308b(标签:0.9.0)版本0.9.0
*| 40b131d(标签:0.8.1)版本0.8.1
*| 391431d(标签:0.8.0)版本0.8.0
下面是一个示例输出,
git show tree
,位于:


此外,如果您安装了(更正:已安装--请参阅安装说明),
arc flow
显示了一个漂亮的上游依赖关系树(即:以前通过
arc flow new_branch
设置,或通过
git branch手动设置,将上游设置为=上游_branch
)。
电弧流的输出示例

master
└──接枝-D999
└──新功能\u 1
└──新功能
我真的觉得
arcflow
视图既漂亮又有用,所以我有一个(非活动的,还没有功能的)
git-tree
开源项目,我计划在其中复制它的行为:

要以“树状”方式显示一个分支,请执行以下操作:
#显示当前签出的分支
吉特lg
#或:显示分支机构名称
吉特lg分行名称
您可以添加
-p
-patch
以显示更改的行:

git lg-p
#或
git lg——补丁
安装
git lg
alias
(来源:):

git config--global alias.lg“log--color--graph\
--pretty=格式:'%Cred%h%Creset-%C(黄色)%d%Creset%s%Cgreen(%cr)\
%C(粗体蓝色)%新月形“--abbrev commit”
示例输出显示了上的分叉、合并和填充:

git特技奖励:
  • -请参阅此处标题为“奖金:始终在您的终端中显示您当前的
    git分支机构”
    您也在使用中!”
相关的:

  • 对于那些使用Github的人来说,他们有一个看起来更容易阅读的分支

    IMO这是这里最好的答案,但我认为或gitk或类似的方法是解决这类问题的方法。这显示了起源处的分支。有什么方法可以让本地分支机构显示此信息吗?@Jeff用分支机构标记替换所有分支机构可能就可以了。完美答案。我在这里找到了我要找的东西。太好了。我喜欢gitk,但我没有在Mac中找到gitk。如果你有任何建议,请告诉我。我开始使用Github桌面,但我喜欢在命令行上工作
    git log --graph --oneline --decorate --all
    
    [alias]
        l = log --graph --oneline --decorate
        ll = log --graph --oneline --decorate --branches --tags
        lll = log --graph --oneline --decorate --all
    
    git log --graph --all \
    --format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) <%an>%C(bold yellow)%d%Creset'