web-dev-qa-db-fra.com

Alter Git Prompt sous Windows

J'utilise Git sous Windows, installé via GitExtensions avec MSysGit (le dernier en date) après avoir sélectionné "ne pas modifier mon invite Windows" lors de l'installation.

Maintenant, j'aimerais pouvoir modifier l'invite par défaut (qui ne montre par défaut que le nom de la branche, ainsi que le nombre de commits locaux depuis le dernier passage à Origin (ou plus précisément à Origin/master, selon ce qui est le plus facile) .

Alors dites au lieu de: me@myPC /c/myRepo (master)

Je verrais quelque chose comme: me@myPC /c/myRepo (master) 5 | 10:20

ce qui signifie que j'ai poussé pour la dernière fois il y a 10h 20min et j'ai depuis effectué 5 commits locaux.

Avant que vous ne le mentionniez, je suis conscient qu'il y a moyen de le faire avec PowerShell, mais je ne veux pas l'utiliser. Je veux mon git bash standard que nous connaissons et aimons tous.

J'ai trouvé quelques solutions à cela, avec la modification de la variable PS1 dans le fichier .bashrc, mais (excusez-moi mon pauvre konwledge), elles semblent ne pas fonctionner (par exemple, la réponse acceptée à this question).

Donc là vous l'avez. Est-ce possible?

25
kko

Le script par défaut de complétion git prend en charge une partie de ce que vous recherchez. Si vous définissez GIT_PS1_SHOWUPSTREAM = "verbose git" dans le fichier/etc/profile, le nombre de validations précédant votre branche en amont sera alors ajouté à l'invite. Vous devrez peut-être définir l’invite comme suit pour inclure un (%s) dans la partie spécifique à git:

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

Pour le moment, c'est nouveau pour moi. Mais git-bash devrait gérer toute version unix que vous avez trouvée. Editez simplement/etc/profile en tant qu'administrateur (c'est en fait %PROGRAMFILES%\Git\etc\profile ou créez un fichier ~/.profile contenant les éléments suivants:

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

avec ces variables d'environnement définies, l'invite msysGit par défaut ressemble à ceci si vous avez un arbre sale avec 1 commit en avance sur Origin:

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

étape 1. Copiez ces deux fichiers dans votre dossier personnel, vous pouvez les trouver sous% PROGRAMFILES%\Git\etc \;

git-completion.bash
git-Prompt.sh

étape 2. Configurez votre PS1 dans votre profil bash comme .bashrc, par exemple:

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

La fonction __git_ps1 est définie dans /git/config/completion/git-completion.bash à partir de mingw bash. Vous devriez pouvoir copier cette fonction dans votre propre fichier .bashrc et la modifier à votre guise. 

FWIW J'ai choisi de sauter __git_ps1 et de faire mon propre choix avec la couleur. Voici le code d'invite de mon .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)"'

L'expression dans Prompt_COMMAND est évaluée chaque fois que l'invite est imprimée.

Pour faire ce que vous voulez, vous devrez probablement analyser le reflog avec quelque chose comme awk ou Perl et l'ajouter après le nom de la branche. Je compte généralement sur gitk pour visualiser les informations que vous recherchez.

4
rlduffy

Si vous utilisez GitPortable pour Windows, vous voudrez peut-être faire cette astuce tirée de ce site

Écrivez $ nano ~/.bashrc dans la console gitportable. Une fois que vous avez terminé, écrivez $ source ~/.bashrc pour recharger les paramètres. Mon installation enregistre un fichier dans le dossier 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