it-swarm-ja.com

現在のディレクトリに.gitフォルダーがある場合、GITをプロンプトに表示できますか?

現在のディレクトリのGITをプロンプトに表示できますかhas/contains a .gitフォルダ?これを行う方法はありますか?私の現在のプロンプトは次のように定義されています:

export PS1="[\[email protected]\h] \w $ "

したがって、私のプロンプトは次のようになります。

[[email protected]] ~/workspace  $

そして、私はそれを動的に次のように見せたいです:

[[email protected]] ~/workspace GIT $
5
djangofan

最も標準的な方法は、gitから直接___git_ps1_を使用することです。 Ubuntuでは、次のパスで利用できます。

_source /usr/lib/git-core/git-sh-Prompt
## source /etc/bash_completion.d/git-Prompt
#PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}\[email protected]\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
_

プロンプトはから変わります

_[[email protected]] ~/workspace $ 
_

_[[email protected]] ~/workspace (master)$ 
_
11
Jakuje

あなたはおそらくこれでもっと幸せになるでしょう:ここに.gitフォルダがありますまたは私の親ディレクトリの1つに

in_git () { 
    local dir=$PWD
    until [[ $dir == / ]]; do 
        [[ -d "$dir/.git" ]] && return 0
        dir=$(dirname "$dir")
    done
    return 1
}                                             

次に、あなたのプロンプトは

PS1='[\[email protected]\h] \w $(in_git && echo "GIT ")\$ '                                 

リポジトリのサブディレクトリにいる場合は、GITインジケーターが表示されます。

3
glenn jackman

すべての回答をありがとう!私はこれを私の.bash_profile(Macの場合)に入れることになりました:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
2
djangofan
  1. 次のようにPrompt_COMMANDを変更します。

    Prompt_COMMAND="$Prompt_COMMAND; if [ -d .git ]; then ingitrepo='GIT '; else ingitrepo=''; fi"
    
  2. PS1を次のように変更します。

    PS1='[\[email protected]\h] \w ${ingitrepo}\$ '
    

変数の早期解決を防ぐためにPS1を設定するときは単一引用符を使用し、$の前にPS1の前にバックスラッシュを置くことをお勧めします。root;でない限り、$と同じです。その後、それは#になります。

また、[ -d .git ]ほとんど gitリポジトリにいるかどうかの有効なテストにすぎないことにも注意してください。しかし、手っ取り早い、そしてあなた自身の個人的な使用のために、それは悪くありません。

1
Wildcard

インストールできます https://github.com/nojhan/liquidprompt 表示されますdev±where±はgitを意味し、devは、現在使用しているgitブランチです。

0