現在のディレクトリのGITをプロンプトに表示できますかhas/contains a .git
フォルダ?これを行う方法はありますか?私の現在のプロンプトは次のように定義されています:
export PS1="[\u@\h] \w $ "
したがって、私のプロンプトは次のようになります。
[user@computer] ~/workspace $
そして、私はそれを動的に次のように見せたいです:
[user@computer] ~/workspace GIT $
最も標準的な方法は、gitから直接___git_ps1
_を使用することです。 Ubuntuでは、次のパスで利用できます。
_source /usr/lib/git-core/git-sh-Prompt
## source /etc/bash_completion.d/git-Prompt
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w $(__git_ps1 "(%s)")\$ '
_
追加された部分$(__git_ps1 "(%s)")
に気付くと、リポジトリの現在の状態(現在のブランチ、進行中のリベース、マージなど)について通知されます。
Ubuntuのファイルはgit
パッケージによって提供されます。
_$ dpkg-query -S /usr/lib/git-core/git-sh-Prompt
git: /usr/lib/git-core/git-sh-Prompt
_
_git-core
_によるFedoraの場合(パスが少し異なります):
_rpm -qf /usr/share/git-core/contrib/completion/git-Prompt.sh
git-core-2.5.5-1.fc23.x86_64
_
プロンプトはから変わります
_[user@computer] ~/workspace $
_
に
_[user@computer] ~/workspace (master)$
_
あなたはおそらくこれでもっと幸せになるでしょう:ここに.gitフォルダがありますまたは私の親ディレクトリの1つに?
in_git () {
local dir=$PWD
until [[ $dir == / ]]; do
[[ -d "$dir/.git" ]] && return 0
dir=$(dirname "$dir")
done
return 1
}
次に、あなたのプロンプトは
PS1='[\u@\h] \w $(in_git && echo "GIT ")\$ '
リポジトリのサブディレクトリにいる場合は、GITインジケーターが表示されます。
すべての回答をありがとう!私はこれを私の.bash_profile(Macの場合)に入れることになりました:
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\] $ "
次のようにPrompt_COMMAND
を変更します。
Prompt_COMMAND="$Prompt_COMMAND; if [ -d .git ]; then ingitrepo='GIT '; else ingitrepo=''; fi"
PS1
を次のように変更します。
PS1='[\u@\h] \w ${ingitrepo}\$ '
変数の早期解決を防ぐためにPS1
を設定するときは単一引用符を使用し、$
の前にPS1
の前にバックスラッシュを置くことをお勧めします。root
;でない限り、$
と同じです。その後、それは#
になります。
また、[ -d .git ]
はほとんど gitリポジトリにいるかどうかの有効なテストにすぎないことにも注意してください。しかし、手っ取り早い、そしてあなた自身の個人的な使用のために、それは悪くありません。
インストールできます https://github.com/nojhan/liquidprompt 表示されますdev±where±はgitを意味し、devは、現在使用しているgitブランチです。