Bashプロンプトで色付きのgitブランチを表示するにはどうすればよいですか?


109

gitリポジトリで作業する場合、このガイドを使用してgnomeターミナル(Ubuntu 15.10)でブランチ名を表示しています。上記に基づいて、〜/ .bashrcファイルに以下が含まれるようになりました。

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes 

...

# Add git branch if its present to PS1
parse_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[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

その結果、私は今得る:

ここに画像の説明を入力してください

それで動作します。しかし、user @ hostの色が削除されたのはなぜですか?また、ブランチ名に色を付けることも期待しています。このようになる前に:

ここに画像の説明を入力してください

更新:代わりにこのガイドを試しました:

https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

これを.bashrcに追加:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

そしてそれは動作します:

ここに画像の説明を入力してください

.bashrcにも注意してください(デフォルト):

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

そのスニペットが正しい結果を提供し、他のバージョンが提供しない理由をまだ見つけていません。これに関する入力はありますか?

以下は、古いスニペットが有効になっている私の.bashrcのバージョンで、動作しません。

http://pastebin.com/M8kjEiH3


force_color_prompt前コメント解除?
ムル

はい、コメントなしとコメント付きの両方で同じ結果を試しました。上記のガイドは、コメントアウトする必要があると述べています。
-u123

完全に投稿できます.bashrcか?IIRCのデフォルトで.bashrcは、カラープロンプトが有効になっていないため、色を表示するには変更する必要があります。変更内容によって異なります。
ムル

1
64行目を見てくださいforce_color_prompt。コメント解除が役に立たなかった理由がわかります。
ムル

2
@ u123はデフォルトについてあまり心配しません.bashrc。あなたが台無しにした場合、あなたはいつでもオリジナルを得ることができます/etc/skel/.bashrc
ムル

回答:


122

このスニペット:

# Add git branch if its present to PS1

parse_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[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi

デフォルトのプロンプト定義を置き換えることを意図しいます:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

で終わる:

unset color_prompt force_color_prompt

.bashrcあなたが投稿には、あなたがそれを追加している示した後、デフォルトのプロンプトの定義とunset color_prompt force_color_prompt(ライン#64)。

デフォルトのプロンプト定義をスニペットに置き換えるそのままに~/.bashrcして、デフォルトのプロンプト定義をunset color_prompt force_color_prompt#64行目でコメントします。


.bashrcの一部は次のようになります

parse_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[01;31m\] $(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
# THE SIX LINES BELOW are the default prompt and the unset (which were in the original .bashrc)
#if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#fi
#unset color_prompt force_color_prompt

スクリーンソット


上記を確認し、あなたは正しいです。bashrcファイルのデフォルト部分を変更することなく動作するため、新しいバージョンのスニペットを使用します。
-u123

1
ブランチ名に色を追加できません。
アビナッシュラジ

デフォルトのコピーでそれをテストし@AvinashRaj ~/.bashrc/etc/skel/.bashrc、あなたはあなたに干渉何かを持っているかもしれません~/.bashrc
コス

un_comment force_color_prompt = yes(行番号48)色が見えない場合。
アディルアッバシ

1
ブランチのステータスに応じて色を付けるには、git自体が提供するネイティブgit-promptスクリプトを使用できます。
ニケットパタク

60

Ubuntu:ターミナルにブランチ名を表示する

〜/ .bashrcファイルにこれらの行を追加します

# Show git branch name
force_color_prompt=yes
color_prompt=yes
parse_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[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

次のコマンドで.bashrcファイルをリロードします。

$ source ~/.bashrc

5
これは18.04でうまくいきました!
cbloss793

1
ありがとう。使用:Ubuntu 18.04.1 LTS
Bishwas Mishra

また、elementaryOS 0.4 Lokiでも機能しました。コマンドsudo nano ~/.bashrcで〜/ .bashrcを開くだけの簡単な方法で、ファイルの最後にコードをコピーし、保存して終了し、上記で貼り付けたコードで〜/ .bashrcをリロードします。どうもありがとう;)
フアン・ゴメス・カリージョ

Redhat 6.8で動作します!
BeeGee

1
これは機能し、色を維持しました!(Ubuntu 18.04)
warkentien2

10

今のところ、私はこれをhttps://gist.github.com/eliotsykes/47516b877f5a4f7cd52fに従って 作業し、これまでのところ気に入っていますが、さらにカスタマイズする予定です。

ターミナル内

mkdir ~/.bash

git-prompt.shgit contribから~/.bash ディレクトリに生ファイルをコピーします:https : //github.com/git/git/blob/master/contrib/completion/git-prompt.sh

~/.bashrcまたは~/.bash_profile(bashのカスタマイズ/セットアップを通常配置するファイルを選択して)内部に、次の行を追加します。

source ~/.bash/git-prompt.sh # Show git branch name at command prompt
export GIT_PS1_SHOWCOLORHINTS=true # Option for git-prompt.sh to show branch name in color

# Terminal Prompt:
# Include git branch, use PROMPT_COMMAND (not PS1) to get color output (see git-prompt.sh for more)
export PROMPT_COMMAND='__git_ps1 "\w" "\n\\\$ "' # Git branch (relies on git-prompt.sh)

gitリポジトリ内にいる限り、Bashプロンプトには現在のgitブランチが色で表示され、コミットされていない変更があった場合に表示されます。


簡単で働きます!
ダニ

これは明確で簡潔であり、仕事をするので、受け入れられた答えである必要があり、他のプラットフォームでも動作します。
ミゲルモリン

2

ホームフォルダーに移動

Ctrl+ hをクリックして、隠しファイルを表示します。

開いた 。bashrcファイルし、最後に次を貼り付けます:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

端末を開いている場合は、閉じてからもう一度開いてください。楽しい!!


こんにちは、私はそれを試してみましたが、スーパーユーザーを切り替える場所でのみ動作します。常に有効にする方法を教えてください。
デニス

0

私の問題は、オプションを有効にしていないことでした

ログインシェルとしてコマンドを実行してください

ターミナル編集プロファイル設定コマンド


0

取り替える

parse_git_branch

parse_git_branch 2>/dev/null

あなたのPS1の定義と幸せに生きます。


0

以下に行を追加します~/.bashrc

export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.