usuario tag crear cambiar git command-prompt bash

tag - git push



Línea PS1 con rama actual de Git y colores. (13)

Mi súper potente línea de comandos de Linux!

Póngalo en su .bashrc o mejor: guárdelo en / etc / bash-prompt y obténgalo de su .bashrc.
El uso de tput se supone que es la forma correcta de hacer colores.

#!/bin/bash set_prompt() { local last_cmd=$? local txtreset=''$(tput sgr0)'' local txtbold=''$(tput bold)'' local txtblack=''$(tput setaf 0)'' local txtred=''$(tput setaf 1)'' local txtgreen=''$(tput setaf 2)'' local txtyellow=''$(tput setaf 3)'' local txtblue=''$(tput setaf 4)'' local txtpurple=''$(tput setaf 5)'' local txtcyan=''$(tput setaf 6)'' local txtwhite=''$(tput setaf 7)'' # unicode "✗" local fancyx=''/342/234/227'' # unicode "✓" local checkmark=''/342/234/223'' # Line 1: Full date + full time (24h) # Line 2: current path PS1="/[$txtbold/]/[$txtwhite/]/n/D{%A %d %B %Y %H:%M:%S}/n/[$txtgreen/]/w/n" # User color: red for root, yellow for others if [[ $EUID == 0 ]]; then PS1+="/[$txtred/]" else PS1+="/[$txtyellow/]" fi # Line 3: user@host PS1+="/u/[$txtwhite/]@/h/n" # Line 4: a red "✗" or a green "✓" and the error number if [[ $last_cmd == 0 ]]; then PS1+="/[$txtgreen/]$checkmark /[$txtwhite/](0)" else PS1+="/[$txtred/]$fancyx /[$txtwhite/]($last_cmd)" fi # Line 4: green git branch PS1+="/[$txtgreen/]$(__git_ps1 '' (%s)'')/[$txtwhite/]" # Line 4: good old prompt, $ for user, # for root PS1+=" //$ " } PROMPT_COMMAND=''set_prompt''

Aquí está mi PS1 actual:

export PS1=''[/u@/h /W$(__git_ps1 " (%s)")]/$ ''

¿Cómo puedo mostrar la rama actual en un color diferente?


Aquí está el mío

export PS1="/n/[/033[1;30m/][$$:$PPID - /j:/!/[/033[1;30m/]]/[/033[0;36m/] /T / /[/033[1;30m/][/[/033[1;34m/]/u@/H/[/033[1;30m/]:/[/033[0;37m/]${SSH_TTY:-o} / /[/033[0;32m/]+${SHLVL}/[/033[1;30m/]] /[/033[1;37m/]/w/[/033[0;37m/]/[/033[1;34m/]/$(__git_ps1 /" (%s)/") /[/033[0;37m/] /n/$ "


Aquí está mi línea de PS1:

/n/[/e[1;37m/]|-- /[/e[1;32m/]/u/[/e[0;39m/]@/[/e[1;36m/]/h/[/e[0;39m/]:/[/e[1;33m/]/w/[/e[0;39m/]/[/e[1;35m/]$(__git_ps1 " (%s)")/[/e[0;39m/] /[/e[1;37m/]--|/[/e[0;39m/]/n$


Aquí está, parte por parte (y no Ruby):

function color_my_prompt { local __user_and_host="/[/033[01;32m/]/u@/h" local __cur_location="/[/033[01;34m/]/w" local __git_branch_color="/[/033[31m/]" #local __git_branch="/`ruby -e /"print (%x{git branch 2> /dev/null}.grep(/^/*/).first || '''').gsub(/^/* (.+)$/, ''(/1) '')/"/`" local __git_branch=''`git branch 2> /dev/null | grep -e ^* | sed -E s/^/////*/ /(.+/)$//(/////1/)/ /`'' local __prompt_tail="/[/033[35m/]$" local __last_color="/[/033[00m/]" export PS1="$__user_and_host $__cur_location $__git_branch_color$__git_branch$__prompt_tail$__last_color " } color_my_prompt

Se parece a esto (con mi propia paleta de terminal):

También, vea this y this artículo.


Aquí hay una solución de Windows / Cygwin / Bash.

Agregue lo siguiente a su archivo ~/.bashrc .

xxx es la ubicación de su repositorio Git local.

GetBranch() { cat /cygdrive/c/xxx/.git/HEAD | sed ''s+^ref: refs/heads/++'' } export PS1="/[/e]0;/w/a/]/n/[/e[32m/]/u@/h /[/e[36m/]/$(GetBranch) /[/e[33m/]/w /[/e[0m/] /n/$ "


Echa un vistazo a liquidprompt:

https://github.com/nojhan/liquidprompt

Tal vez un poco demasiado pesado para sus necesidades, pero puede desactivar las características configurando

LP_ENABLE_...=0

Consulte la documentación en la página de arriba.


Esta es mi solución PS1.

Se ve muy bien en una Mac con el tema Novel. Lo siento, pero mi sangría se cortó un poco. Hackea hasta que te guste.

function we_are_in_git_work_tree { git rev-parse --is-inside-work-tree &> /dev/null } function parse_git_branch { if we_are_in_git_work_tree then local BR=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD 2> /dev/null) if [ "$BR" == HEAD ] then local NM=$(git name-rev --name-only HEAD 2> /dev/null) if [ "$NM" != undefined ] then echo -n "@$NM" else git rev-parse --short HEAD 2> /dev/null fi else echo -n $BR fi fi } function parse_git_status { if we_are_in_git_work_tree then local ST=$(git status --short 2> /dev/null) if [ -n "$ST" ] then echo -n " + " else echo -n " - " fi fi } function pwd_depth_limit_2 { if [ "$PWD" = "$HOME" ] then echo -n "~" else pwd | sed -e "s|.*//(.*/.*/)|/1|" fi } COLBROWN="/[/033[1;33m/]" COLRED="/[/033[1;31m/]" COLCLEAR="/[/033[0m/]" # Export all these for subshells export -f parse_git_branch parse_git_status we_are_in_git_work_tree pwd_depth_limit_2 export PS1="$COLRED<$COLBROWN /$(pwd_depth_limit_2)$COLRED/$(parse_git_status)$COLBROWN/$(parse_git_branch) $COLRED>$COLCLEAR " export TERM="xterm-color"

Si está en una sucursal, obtiene el nombre de la sucursal.

Si estás en un proyecto Git recién iniciado, solo obtienes ''@''.

Si no tiene cabeza, obtiene un buen nombre humano en relación con alguna rama o etiqueta, con una ''@'' que precede al nombre.

Si no tiene cabeza y no es un antepasado de alguna rama o etiqueta, simplemente obtiene el SHA1 corto.

Además, un ''-'' rojo significa un directorio e índice de trabajo limpio, y un ''+'' rojo significa lo contrario.


Para mi Mac con el tema Homebrew, esto funciona muy bien. Totalmente depurado y muy rápido, y completamente autónomo.

# Color prompt for git reset=$(tput sgr0) boldgreen=$(tput setaf 2)$(tput bold) cyan=$(tput sgr0)$(tput setaf 6) boldred=$(tput setaf 1)$(tput bold) boldwhite=$(tput setaf 7)$(tput bold) boldyellow=$(tput setaf 3)$(tput bold) PARENCLR=$''/001/e[0;36m/002'' BRANCHCLR=$''/001/e[1;33m/002'' alias branchname="git branch 2>/dev/null | sed -ne ''s/^* /(.*/)/ ${PARENCLR}(${BRANCHCLR}/1${PARENCLR}/)/p''" GIT_STATUS=''$(branchname)'' PROMPT_CHAR="/$" PS1="/[$boldgreen/]/u/[$cyan/]::/[$boldred/]/h /[$cyan/]{/[$boldwhite/]...//W/[$cyan/]}/[$reset/]$GIT_STATUS/[$reset/]$PROMPT_CHAR "

Así es como se ve: Mac + Homebrew + Color Git Prompt

Si desea tener la ruta completa (o eliminar la ... /), simplemente cambie -W a -w (y elimine la ... /).


Para un estado más complicado de Git puedes usar this .


Puede envolver la parte que desee en color con lo siguiente:

/e[0;32m : establece el color (en este caso, en verde)

/e[m - vuelve a establecer el color por defecto

Por ejemplo, esto establece la solicitud al último token de la ruta actual, en verde, seguido de $ en el color predeterminado:

export PS1=''/e[0;32m/w/e[m $''

Otros colores están disponibles también. Eche un vistazo a este artículo en colorización para obtener una lista completa de alternativas.


Simplemente invoque tput con los parámetros apropiados. Ver las tput(1) y terminfo(5) .


Versión modificada del indicador de @ cmcginty que se agrega a la función de análisis git y utiliza un espaciado ligeramente diferente:

# So I know where I am in repos: parse_git_branch() { git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/'' } # Modified from: # https://.com/a/4138531/2662028 export PS1=''/n/[/e[1;37m/]|-- /[/e[1;32m/]/u/[/e[0;39m/]@/[/e[1;36m/]/h/[/e[0;39m/]:/[/e[1;33m/]/w/[/e[0;39m/]/[/e[1;35m/]$(parse_git_branch " (%s)")/[/e[0;39m/] /[/e[1;37m/]--|/[/e[0;39m/]/n/$ ''

Esto también usa /$ en el indicador en lugar de $ , lo que significa que obtendrá # cuando sea root.


function pc { [ -d .git ] && git name-rev --name-only @ } PS1=''/e];/s/a/n/e[33m/w /e[36m$(pc)/e[m/n$ ''

Source