在 Linux 上显示当前分支和着色(如 Windows 上的 Git Bash)

Posted

技术标签:

【中文标题】在 Linux 上显示当前分支和着色(如 Windows 上的 Git Bash)【英文标题】:Show current branch and coloring on Linux (like Git Bash on Windows) 【发布时间】:2017-07-01 17:34:06 【问题描述】:

在 Windows 上的 Git Bash 上,我得到了漂亮的颜色,并显示了当前分支,如下所示:

如何在 Linux 上获得相同的颜色和提示?在 Linux 上,我使用常规终端,它不显示当前分支。

【问题讨论】:

有几十个包有花哨的提示设置。选择你喜欢的;确保它适用于您喜欢的 shell。 Arpit 下面提到了 zsh,需要从 bash 切换到 zsh。 【参考方案1】:

如果你使用的是 bash,

我在 ~/.bashrc 上使用以下内容:

show_git_branch() 
   git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
 
 export PS1="\[\033[0;37m\]\u@\h\[\033[0;37m\] \w \[\033[31m\]\$(show_git_branch)\[\033[00m\]$\[\033[00m\] "

外观示例:

您只需将代码添加到您的 .bashrc 文件并运行 source ~/.bashrc

【讨论】:

我试用时看起来像(master)$[00 m @sashoalm 我的错,我复制时有多余的空间,现在已修复。 你的函数的名字是show_git_branch,然后你使用一个叫做parse_git_branch的东西。 @cheb1k4 已修复【参考方案2】:

如果您想保留现有 linux 终端的相同颜色并显示当前的 git 分支,您可以将以下内容添加到您的默认 PS1。

PS1 基本上告诉您的 bash 提示符要显示什么。 参考:How to Change / Set up bash custom prompt (PS1) in Linux

我使用的是 Ubuntu 20.04,默认 PS1 位于 ~/.bashrc 文件中的 if [ "$color_prompt" = yes ]; then 下。

步骤:

    打开~/.bashrc文件找到if [ "$color_prompt" = yes ]; then 在 if 语句上方定义以下 bash 函数(感谢@Nogoseke)(您可以在文件中 PS1 值上方的任何位置定义它)。
#show git branch
show_git_branch() 
   git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'

    将 PS1 值更新为以下值:
if [ "$color_prompt" = yes ]; then
    PS1="$debian_chroot:+($debian_chroot)\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[\033[31m\]\$(show_git_branch)\[\033[00m\]$ "
else
    PS1="$debian_chroot:+($debian_chroot)\u@\h:\w \$(show_git_branch)\$ "
fi

整个事情应该是这样的:

#show git branch
show_git_branch() 
   git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'


if [ "$color_prompt" = yes ]; then
    PS1="$debian_chroot:+($debian_chroot)\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[\033[31m\]\$(show_git_branch)\[\033[00m\]$ "
else
    PS1="$debian_chroot:+($debian_chroot)\u@\h:\w \$(show_git_branch)\$ "
fi
    保存更改并重新启动终端。

它应该看起来像这样: Terminal with git branch

【讨论】:

以上是关于在 Linux 上显示当前分支和着色(如 Windows 上的 Git Bash)的主要内容,如果未能解决你的问题,请参考以下文章

mac bash上显示git分支与状态

IOS:OpenGL ES 2.0 与 3.0 中动态分支着色器的性能

git将当前分支上修改的东西转移到新建分支

请教如何用WIND查询某只股票一段时间内的具体走势?

POJ 2763 Housewife Wind 树链拋分

如何在我的 PowerShell 提示符中显示我当前的 git 分支名称?