我已经发现Tmux 配置文件这显示了如何将 Git 分支添加到 Tmux 状态行,但是[[ branch ]]
无论我是否在 Git 存储库中,它都只是显示。我不确定这是否需要git-completion
,但如果需要,我甚至不确定它是否已安装,因为它是 Ubuntu 中的“虚拟”包(前导“v”表示“虚拟”):
$ aptitude search git-completion
v git-completion
$ sudo apt-get install git-completion
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'git' instead of 'git-completion'
git is already the newest version.
我如何将 CWD 的分支和 git repo 名称添加到 Tmux 状态行?
谢谢。
答案1
我开发了一个 Bash 脚本来执行此操作:tmux-git。
tmux-git 显示当前工作目录的 Git 分支,并检查未提交和存储的更改。
答案2
在新版本的 tmux 中这变得容易得多:
set -g status-right '#(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD)'
答案3
我开发了一个独立于平台和 shell 的解决方案,将 Git 工作树信息显示到 Git 状态栏中:gitmux。
这是项目页面上的截屏视频README
:
除了显示分支和远程之外,它还显示有关 Git 工作树状态的其他信息:
- 提交次数先/在后面上游分支,分支分歧
- 数量已更改文件,上演,修改的,冲突和 *存储** 元素
- 颜色
怎么运行的
通过添加set -g status-right '#(gitmux #{pane_current_path})'
到.tmux.conf
,gitmux
每次工作目录更新或在终端中输入命令时都会调用,gitmux
打印 git status 的 tmux 格式字符串,该字符串显示在 tmux 状态栏中。或者,如果工作目录不是由 Git 管理的,则不会打印任何内容。
答案4
就像 @Jasha 提到的那样,当您更改分支时,状态行不会更新。但是,Tmux 有一个名为的窗口选项pane-border-status
。将@Nathan Kot 的答案与此选项相结合可得到以下配置。
set -g pane-border-status bottom
set -g pane-border-format ' #(git -C #{pane_current_path} rev-parse --abbrev-ref HEAD) #[fg=cyan]#{pane_current_path} '
这会在底部(或顶部)产生一个窗格边框,如下所示:
── master /path/to/your/repository ──────────────────────────────────────────────────────────
当然,您可以根据需要添加颜色和所有其他类型的样式。