web-dev-qa-db-ja.com

WindowsでGitプロンプトを変更する

インストール中に「Windowsプロンプトを変更しない」を選択したMSysGit(最新)を使用してGitExtensionsを介してインストールされたGitをWindowsで使用しています。

ここで、デフォルトのプロンプトを変更できるようにしたいと思います(デフォルトでは、ブランチ名だけが表示され、最後にOrigin(または具体的にはOrigin/master)にプッシュしてからの時間とローカルコミットの数も表示されます。 、どちらか簡単な方)。

したがって、代わりに次のように言います:me@myPC /c/myRepo (master)

me@myPC /c/myRepo (master) 5 | 10:20の行に沿って何かが表示されます。

つまり、最後に10時間20分前にプッシュし、それ以来5つのローカルコミットを行っています。

言及する前に、PowerShellでそれを行う方法があることは承知していますが、使用したくありません。誰もが知っていて大好きな標準のgitbashが欲しいです。

PS1ファイルの.bashrc変数を変更することで、それに対するいくつかの解決策を見つけましたが、(私の貧弱なUnix konwledgeを許して)それらは機能していないようです(たとえば、 this 質問への回答を受け入れました)。

だからあなたはそれを持っています。これは可能ですか?

26
kko

デフォルトのgit-completionスクリプトは、あなたが求めているものの一部をサポートします。/etc/profileファイルでGIT_PS1_SHOWUPSTREAM = "verbose git"を設定すると、アップストリームブランチの前のコミット数がプロンプトに追加されます。 git固有の部分に(%s)を含めるには、以下のようにプロンプ​​トを設定する必要がある場合があります。

export PS1='\[\033]0;$MSYSTEM:\w\007
\033[32m\]\u@\h \[\033[33m\w$(__git_ps1 " (%s)")\033[0m\]
\$ '

時間の部分については、それは私にとって新しいことです。ただし、git-bashは、見つかったUNIXバージョンを処理する必要があります。管理者として/ etc/profileを編集するだけです(実際には%PROGRAMFILES%\Git\etc\profileであるか、以下を含む〜/ .profileファイルを作成します。

GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUPSTREAM='verbose git'
export GIT_PS1_SHOWDIRTYSTATE GIT_PS1_SHOWUPSTREAM

これらの環境変数が設定されている場合、オリジンの前に1つのコミットがあるダーティツリーがある場合、デフォルトのmsysGitプロンプトは次のようになります。

pat@FROG /c/src/msysgit (devel * u+1)
$ git status --short --branch
## devel...Origin/devel [ahead 1]
 M doc/git/html
 M etc/inputrc
12
patthoyts

手順1.これら2つのファイルをホームフォルダにコピーします。%PROGRAMFILES%\ Git\etc \の下にあります。

git-completion.bash
git-Prompt.sh

ステップ2..bashrcのようなbashプロファイルでPS1を構成します。次に例を示します。

. git-completion.bash
. git-Prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
PS1='\w\[\033[01;32m\]$(__git_ps1)\[\033[00m\]\$ '
6
aufula

__git_ps1関数は、mingwbash内から/git/config/completion/git-completion.bashで定義されます。この関数を独自の.bashrcにコピーして、必要に応じて編集できるはずです。

FWIW __git_ps1をスキップして、自分の色を使うことにしました。これが私の.bashrcからのプロンプトコードです:

DEFAULT_COLOR='\[\e[0m\]'
BLACK='\[\e[0;30m\]'
LTBLUE='\[\e[1;34m\]'
LTRED='\[\e[1;31m\]'

USER_COLOR=$LTBLUE
GIT_CHANGE_COLOR=$LTRED
GIT_NO_CHANGE_COLOR="$BLACK"

gitPrompt() {
  local gitPrompt=$(__git_ps1)
  local gitColor="$GIT_NO_CHANGE_COLOR"
  if [ -n "$gitPrompt" ]; then
    branch=$(git symbolic-ref HEAD 2>/dev/null)
    if [ "$gitPrompt" != " (${branch##refs/heads/})" ]; then
      gitColor="$GIT_CHANGE_COLOR"
    fi
  fi
  echo "$USER_COLOR\u@\h:\W$gitColor$gitPrompt$DEFAULT_COLOR$ "
}

Prompt_COMMAND='PS1="$(gitPrompt)"'

Prompt_COMMANDの式は、プロンプトが出力されるたびに評価されます。

やりたいことをするためには、おそらくawkやPerlのようなものでreflogを解析し、それをブランチ名の後に追加する必要があります。私は通常、あなたが探している情報を視覚化するためにgitkに依存しています。

4
rlduffy

GitPortable for Windowsを実行している場合は、 このサイト から取得したこのトリックを実行することをお勧めします。

書く $ nano ~/.bashrcgitportableコンソールで。編集が終わったら、write $ source ~/.bashrc設定を再読み込みします。私のインストールでは、ファイルをC:\ apps\GitPortable\Data\homeフォルダーに保存します。

# Git-friendly Prompt showing dirty state
# http://stackoverflow.com/questions/10133173/alter-git-Prompt-on-windows

shopt -s promptvars
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM='verbose git'
export PS1='\[\033[1;36m\]\[\033[0m\]\[\033[1;34m\]\w\[\033[0m\] 
\[\033[1;32m\]$(__git_ps1)\[\033[0m\]\$ '

# Enable color support of ls
alias ls='ls --color=auto -alhX'
0
Whome