web-dev-qa-db-fra.com

Comment puis-je afficher le chemin actuel de la branche et du dossier dans le terminal?

J'ai visionné certaines des vidéos de la Team Treehouse et elles ont un terminal très agréable à regarder lorsqu'elles travaillent avec Git.

Par exemple, ils ont (quelque chose de similaire):

mike@treehouseMac: [/Work/test - feature-branch-name] $ git add .
mike@treehouseMac: [/Work/test - feature-branch-name] $ git commit -m "Some feature."
mike@treehouseMac: [/Work/test - feature-branch-name] $ git checkout master
mike@treehouseMac: [/Work/test - master] $ git status

Comment mon terminal peut-il me montrer des informations utiles sur la branche dans laquelle je me trouve, avec des couleurs pour distinguer les bits des données que je souhaite? Existe-t-il une sorte de plug-in que je n'ai pas encore trouvé?

J'utilise Mac OSX 10.8

49
sergserg

Il ne s'agit pas d'un plugin. Il s'agit de tours rapides dans Shell. 

Pour une installation cool dans bash, consultez le projet dotfiles de ce gars:

https://github.com/mathiasbynens/dotfiles

Pour obtenir une invite de fantaisie, incluez le .bash_Prompt dans votre ~/.bash_profile ou ~/.bashrc.

Pour obtenir exactement la même invite que dans votre question, modifiez la ligne export PS1 à la fin de .bash_Prompt comme suit:

export PS1="\[${BOLD}${Magenta}\]\u\[$WHITE\]@\[$ORANGE\]\h\[$WHITE\]: [\[$GREEN\]\w\[$WHITE\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" - \")\[$PURPLE\]\$(parse_git_branch)\[$WHITE\]] \$ \[$RESET\]"

J'ai fini par utiliser tous les fichiers .bash* de ce référentiel il y a environ un mois et cela m'a été vraiment utile.

Pour Git, il y a des goodies supplémentaires dans .gitconfig.

Et puisque vous êtes un utilisateur mac, il y a encore plus de goodies dans .osx.

57
janos

Moyen simple

Ouvrez ~/.bash_profile dans votre éditeur favori et ajoutez le contenu suivant en bas.

Branche Git dans Prompt.

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ "

AJOUTER UN NOM DE BRANCHE GIT AU TERMINAL Invite (MAC)

43
6LYTH3

Pour développer les bonnes réponses existantes, un moyen très simple d'obtenir un terminal superbe est d'utiliser le projet open source Dotfiles.

https://github.com/mathiasbynens/dotfiles


enter image description here


L'installation est extrêmement simple sous OSX et Linux. Exécutez la commande suivante dans Terminal.

git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh

Cela va:

  1. Git clone le repo.
  2. cd dans le dossier.
  3. Exécutez le script d'installation bash.
27
sergserg

Mon invite comprend:

  • Etat de sortie de la dernière commande (sinon 0)
  • Changements distinctifs lorsque la racine
  • rsync- style user@Host:pathname pour copier-coller
  • Informations sur les branches, index, modifications, non suivies et en amont de Git
  • Jolies couleurs

Exemple:  Screenshot of my Prompt in action Pour ce faire, ajoutez ce qui suit à votre ~/.bashrc:

#
# Set the Prompt #
#

# Select git info displayed, see /usr/lib/git-core/git-sh-Prompt for more
export GIT_PS1_SHOWDIRTYSTATE=1           # '*'=unstaged, '+'=staged
export GIT_PS1_SHOWSTASHSTATE=1           # '$'=stashed
export GIT_PS1_SHOWUNTRACKEDFILES=1       # '%'=untracked
export GIT_PS1_SHOWUPSTREAM="verbose"     # 'u='=no difference, 'u+1'=ahead by 1 commit
export GIT_PS1_STATESEPARATOR=''          # No space between branch and index status
export GIT_PS1_DESCRIBE_STYLE="describe"  # detached HEAD style:
#  contains      relative to newer annotated tag (v1.6.3.2~35)
#  branch        relative to newer tag or branch (master~4)
#  describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
#  default       exactly eatching tag

# Check if we support colours
__colour_enabled() {
    local -i colors=$(tput colors 2>/dev/null)
    [[ $? -eq 0 ]] && [[ $colors -gt 2 ]]
}
unset __colourise_Prompt && __colour_enabled && __colourise_Prompt=1

__set_bash_Prompt()
{
    local exit="$?" # Save the exit status of the last command

    # PS1 is made from $PreGitPS1 + <git-status> + $PostGitPS1
    local PreGitPS1="${debian_chroot:+($debian_chroot)}"
    local PostGitPS1=""

    if [[ $__colourise_Prompt ]]; then
        export GIT_PS1_SHOWCOLORHINTS=1

        # Wrap the colour codes between \[ and \], so that
        # bash counts the correct number of characters for line wrapping:
        local Red='\[\e[0;31m\]'; local BRed='\[\e[1;31m\]'
        local Gre='\[\e[0;32m\]'; local BGre='\[\e[1;32m\]'
        local Yel='\[\e[0;33m\]'; local BYel='\[\e[1;33m\]'
        local Blu='\[\e[0;34m\]'; local BBlu='\[\e[1;34m\]'
        local Mag='\[\e[0;35m\]'; local BMag='\[\e[1;35m\]'
        local Cya='\[\e[0;36m\]'; local BCya='\[\e[1;36m\]'
        local Whi='\[\e[0;37m\]'; local BWhi='\[\e[1;37m\]'
        local None='\[\e[0m\]' # Return to default colour

        # No username and bright colour if root
        if [[ ${EUID} == 0 ]]; then
            PreGitPS1+="$BRed\h "
        else
            PreGitPS1+="$Red\u@\h$None:"
        fi

        PreGitPS1+="$Blu\w$None"
    else # No colour
        # Sets Prompt like: ravi@boxy:~/prj/sample_app
        unset GIT_PS1_SHOWCOLORHINTS
        PreGitPS1="${debian_chroot:+($debian_chroot)}\u@\h:\w"
    fi

    # Now build the part after git's status

    # Highlight non-standard exit codes
    if [[ $exit != 0 ]]; then
        PostGitPS1="$Red[$exit]"
    fi

    # Change colour of Prompt if root
    if [[ ${EUID} == 0 ]]; then
        PostGitPS1+="$BRed"'\$ '"$None"
    else
        PostGitPS1+="$Mag"'\$ '"$None"
    fi

    # Set PS1 from $PreGitPS1 + <git-status> + $PostGitPS1
    __git_ps1 "$PreGitPS1" "$PostGitPS1" '(%s)'

    # echo '$PS1='"$PS1" # debug    
    # defaut Linux Mint 17.2 user Prompt:
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\] $(__git_ps1 "(%s)") \$ '
}

# This tells bash to reinterpret PS1 after every command, which we
# need because __git_ps1 will return different text and colors
Prompt_COMMAND=__set_bash_Prompt
9
Tom Hale

Le paquet git installé sur votre système inclut des fichiers bash pour vous aider à créer une invite informative. Pour créer des couleurs, vous devez insérer des séquences d'échappement terminaux dans votre invite. Enfin, l'ingrédient final consiste à mettre à jour votre invite après l'exécution de chaque commande à l'aide de la variable intégrée Prompt_COMMAND.

Modifiez votre ~/.bashrc pour inclure les éléments suivants, et vous devriez obtenir l’invite dans votre question, modulo quelques différences de couleur.

#
# Git provides a bash file to create an informative Prompt. This is its standard
# location on Linux. On Mac, you should be able to find it under your Git
# installation. If you are unable to find the file, I have a copy of it on my GitHub.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-git-Prompt.sh
#
source /usr/share/git/completion/git-Prompt.sh

#
# Next, we need to define some terminal escape sequences for colors. For a fuller
# list of colors, and an example how to use them, see my bash color file on my GitHub
# and my coniguration for colored man pages.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/10-colors.sh
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-less.sh
#
color_start='\e['
color_end='m'
color_reset='\e[0m'
color_bg_blue='44'

#
# To get a fancy git Prompt, it's not sufficient to set PS1. Instead, we set Prompt_COMMAND,
# a built in Bash variable that gets evaluated before each render of the Prompt.
#
export Prompt_COMMAND="PS1=\"\${color_start}\${color_bg_blue}\${color_end}\u@\h [\w\$(__git_ps1 \" - %s\")]\${color_reset}\n\$ \""

#
# If you find that the working directory that appears in the Prompt is ofter too long,
# then trim it.
#
export Prompt_DIRTRIM=3
2
Chadversary

Il y a beaucoup de générateurs PS1 mais ezprompt a aussi le statut git (2ème onglet 'Status Elements').

1
Anver Sadhat

Sur la base de la réponse de 6LYTH3, j'ai décidé d'afficher la mienne en raison d'améliorations qui pourraient s'avérer utiles:

Solution simple

Ouvrez ~/.bash_profile et ajoutez le contenu suivant

# \[\e[0m\] resets the color to default color
reset_color='\[\e[0m\]'
#  \[\033[33m\] sets the color to yellow
path_color='\[\033[33m\]'
# \e[0;32m\ sets the color to green
git_clean_color='\[\e[0;32m\]'
# \e[0;31m\ sets the color to red
git_dirty_color='\[\e[0;31m\]'

# determines if the git branch you are on is clean or dirty
git_Prompt ()
{
  # Is this a git directory?
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    return 0
  fi
  # Grab working branch name
  git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
  # Clean or dirty branch
  if git diff --quiet 2>/dev/null >&2; then
    git_color="${git_clean_color}"
  else
    git_color="${git_dirty_color}"
  fi
  echo " [$git_color$git_branch${reset_color}]"
}

export PS1="${path_color}\w\[\e[0m\]$(git_Prompt)\n"

Ceci devrait:

1) Prompt the path you're in, in color: path_color.
2) Tell you which branch are you.
3) Color the name of the branch based on the status of the branch with git_clean_color 
for a clean work directory and git_dirty_color for a dirty one.
4) The brackets should stay in the default color you established in your computer.
5) Puts the Prompt in the next line for readability.

Vous pouvez personnaliser les couleurs avec cette liste _

Solution sophistiquée

Une autre option consiste à utiliser Git Bash Prompt, à l’installer avec this . J'ai utilisé l'option via Homebrew sur Mac OS X.

git_Prompt_list_themes pour voir les thèmes mais je n’ai aimé aucun d’eux.

git_Prompt_color_samples pour voir les couleurs disponibles.

git_Prompt_make_custom_theme [<Name of base theme>] pour créer un nouveau thème personnalisé, cela devrait créer un fichier .git-Prompt-colors.sh.

subl ~/.git-Prompt-colors.sh pour ouvrir git-Prompt-colors.sh et personnaliser:

Le fichier .git-Prompt-colors.sh devrait ressembler à ceci avec ma personnalisation

    override_git_Prompt_colors() {
      GIT_Prompt_THEME_NAME="Custom"

      # Clean or dirty branch
      if git diff --quiet 2>/dev/null >&2; then
        GIT_Prompt_BRANCH="${Green}"
      else
        GIT_Prompt_BRANCH="${Red}"
      fi
    }

    reload_git_Prompt_colors "Custom"

J'espère que cela vous aide, passez une bonne journée!

0
Jose Paez

Installez simplement les plugins oh-my-zsh comme décrit dans ce lien .

enter image description here

Cela fonctionne mieux sur macOS et Linux.

Installation basique

Oh My Zsh est installé en exécutant l'une des commandes suivantes sur votre terminal. Vous pouvez l'installer via la ligne de commande avec curl ou wget.

via curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

via wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
0
amy2719