1. ホーム
  2. git

[解決済み] Bashのコマンドプロンプトでgitブランチを追加する

2022-04-16 12:41:16

質問

bashプロンプトで現在作業している(チェックアウトした)gitブランチを追加してみましたが、うまくいきません... ( アクティブディレクトリ/ファイルを表示する現在のパスはそのままに そのまま) 私は自宅に.bashrcファイルを持っていますが、多くの人が.profileファイルについて言及しているのを見ました...。

解決方法は?

git 1.9.3またはそれ以降: を使用します。 __git_ps1

Gitは git-prompt.sh この関数には __git_ps1 その

bash の PS1 プロンプトに追加するテキストを表示します (ブランチ名を含む)

その最も基本的な使い方は

$ __git_ps1
(master)

また、オプションで書式文字列を受け取ります。

$ __git_ps1 'git:[%s]'
git:[master]

入手方法

まず、ファイルをどこかにコピーします(例. ~/.git-prompt.sh ).

オプション1:ファイルシステム上の既存のコピーを使用する。 例(Mac OS X 10.15)。

$ find / -name 'git-prompt.sh' -type f -print -quit 2>/dev/null
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

オプション2:スクリプトを引っ張る GitHubから .

次に、次の行を .bashrc/.zshrc :

source ~/.git-prompt.sh

最後に PS1 を呼び出します。 __git_ps1 をコマンドの代用として使用します。

Bashです。

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Zsh

setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

git < 1.9.3

ただし、git 1.9.3(2014年5月)だけなので注意が必要です。 またはそれ以降 を使用することができます。 安全に そのブランチ名を表示する(!)

参照 コミット8976500 によって リチャード・ハンセン ( richardhansen ) :

bashもzshも、PS1の値を パラメータ展開 , コマンド置換 と算術展開があります。

エスケープされていない生のブランチ名を PS1 で実行する場合、2つまたは 3引数モードでは PS1 を使用して、ブランチ名を保持する変数を参照します。

シェルは再帰的に展開しないので、以下のような特別に細工されたブランチ名による任意のコードの実行を回避することができます。

'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.

どんな悪知恵が働いたのか、そんなブランチ名をつけるとは......;) ( xkcdのようにママの横で )

その他の例

still_dreaming_1 レポート コメント欄 :

でカラープロンプトを表示させたい場合、これはとても有効なようです。 xterm (私の .bashrc ):

PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\03‌​3[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ ' 

枝も含めて、すべてが違う色になっている。

Linux Mint 17.3 Cinnamon 64bitで。

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '