tag - ¿qué herramienta podemos hacer para tener un mayor control de nuestros proyecto en github?
Agregar git branch en el indicador de comando Bash (10)
Intenté agregar la rama git en la que estoy trabajando actualmente (check-out) en el indicador bash sin éxito ... ( manteniendo mi ruta actual que muestra intacto el directorio / archivo activo ) Tengo un archivo .bashrc en mi casa, pero también vi a muchas personas mencionar el archivo .profile ..
1- Si no tienes finalización de bash ...: sudo apt-get install bash-completion
2- Edite su archivo .bashrc y marque (o agregue):
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
3- ... antes de su pronta línea: export PS1=''$(__git_ps1) /w/$ ''
( __git_ps1 mostrará tu rama de git)
4- hacer source .bashrc
EDITAR:
Lecturas adicionales: no reinventar la rueda
Aquí es cómo configuré el aviso para mostrar el estado de Git:
Obtener el script de git-prompt:
curl -o ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
Y personalice su solicitud agregando el siguiente código en su archivo .bashrc:
# Load Git functions
source ~/.git-prompt.sh
# Syntactic sugar for ANSI escape sequences
txtblk=''/e[0;30m'' # Black - Regular
txtred=''/e[0;31m'' # Red
txtgrn=''/e[0;32m'' # Green
txtylw=''/e[0;33m'' # Yellow
txtblu=''/e[0;34m'' # Blue
txtpur=''/e[0;35m'' # Purple
txtcyn=''/e[0;36m'' # Cyan
txtwht=''/e[0;37m'' # White
bldblk=''/e[1;30m'' # Black - Bold
bldred=''/e[1;31m'' # Red
bldgrn=''/e[1;32m'' # Green
bldylw=''/e[1;33m'' # Yellow
bldblu=''/e[1;34m'' # Blue
bldpur=''/e[1;35m'' # Purple
bldcyn=''/e[1;36m'' # Cyan
bldwht=''/e[1;37m'' # White
unkblk=''/e[4;30m'' # Black - Underline
undred=''/e[4;31m'' # Red
undgrn=''/e[4;32m'' # Green
undylw=''/e[4;33m'' # Yellow
undblu=''/e[4;34m'' # Blue
undpur=''/e[4;35m'' # Purple
undcyn=''/e[4;36m'' # Cyan
undwht=''/e[4;37m'' # White
bakblk=''/e[40m'' # Black - Background
bakred=''/e[41m'' # Red
badgrn=''/e[42m'' # Green
bakylw=''/e[43m'' # Yellow
bakblu=''/e[44m'' # Blue
bakpur=''/e[45m'' # Purple
bakcyn=''/e[46m'' # Cyan
bakwht=''/e[47m'' # White
txtrst=''/e[0m'' # Text Reset
# Prompt variables
PROMPT_BEFORE="$txtcyn/u@/h $txtwht/w$txtrst"
PROMPT_AFTER="//n///$ "
# Prompt command
PROMPT_COMMAND=''__git_ps1 "$PROMPT_BEFORE" "$PROMPT_AFTER"''
# Git prompt features (read ~/.git-prompt.sh for reference)
export GIT_PS1_SHOWDIRTYSTATE="true"
export GIT_PS1_SHOWSTASHSTATE="true"
export GIT_PS1_SHOWUNTRACKEDFILES="true"
export GIT_PS1_SHOWUPSTREAM="auto"
export GIT_PS1_SHOWCOLORHINTS="true"
Si desea obtener más información, puede obtener todos los archivos de puntos aquí: https://github.com/jamming/dotfiles
He probado un pequeño script en python que va en una carpeta bin ... archivo ''gitprompt''
#!/usr/bin/env python
import subprocess, os
s = os.path.join(os.getcwd(), ''.git'')
def cut(cmd):
ret=''''
half=0
record = False
for c in cmd:
if c == "/n":
if not (record):
pass
else:
break
if (record) and c!="/n":
ret = ret + c
if c==''*'':
half=0.5
if c=='' '':
if half == 0.5:
half = 1
if half == 1:
record = True
return ret
if (os.path.isdir(s)):
out = subprocess.check_output("git branch",shell=True)
print cut(out)
else:
print "-"
Hazlo ejecutable y esas cosas
A continuación, ajuste el indicador de bash en consecuencia como:
/u:/w--[$(gitprompt)] /$
Para mac, esto funciona realmente bien: http://martinfitzpatrick.name/article/add-git-branch-name-to-terminal-prompt-mac/ :
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/''
}
export PS1="/u@/h /W/[/033[32m/]/$(parse_git_branch)/[/033[00m/] $ "
Si usa la concha de pescado es bastante sencillo. El pez es un caparazón interactivo que viene con muchas cosas buenas. Puedes instalarlo usando apt-get
.
sudo apt-get install fish
a continuación, puede cambiar la configuración de solicitud usando
> fish_config
Web config started at ''http://localhost:8001/''. Hit enter to stop.
Created new window in existing browser session.
ahora vaya a http://localhost:8001/
abra la pestaña de solicitud y elija la opción clásica + git
Ahora haz clic en el botón de solicitud de uso y estás listo.
Siga los pasos que se detallan a continuación: (Linux)
Edite el archivo ~/.bashrc
, para ingresar las siguientes líneas al final (en el caso de Mac, el archivo sería ~/.bash_profile
)
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/''
}
export PS1="/u@/h /W/[/033[32m/]/$(parse_git_branch)/[/033[00m/] $ "
Ahora, inicie la nueva ventana de terminal e intente ingresar a cualquier git-repo. La rama actual se mostraría, con el aviso.
Siga los pasos a continuación para mostrar el nombre de la sucursal de su repositorio de GIT en la terminal de ubuntu:
Paso 1: abre el terminal y edita .bashrc usando el siguiente comando.
vi .bashrc
Paso 2: agregue la siguiente línea al final del archivo .bashrc:
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/'' }
export PS1="/u@/h /W/[/033[32m/]/$(parse_git_branch)/[/033[00m/] $ "
step3: source .bashrc en el directorio raíz (home) haciendo:
/ rootfolder: ~ $ source .bashrc
Paso 4: reinicie y abra el terminal y verifique el cmd. Navega a la ruta del directorio repo de GIt y listo. :)
Tenga en cuenta que este tipo de mensaje ahora está gestionado por contrib/completion/git-prompt.sh y su variable __git_ps1_branch_name
.
- Copie este archivo en algún lugar (por ejemplo,
~/.git-prompt.sh
).- Agregue la siguiente línea a su
.bashrc/.zshrc
:
source ~/.git-prompt.sh
- Cambie su
PS1
para llamar a__git_ps1
como sustitución de comando:
Bash:
PS1=''[/u@/h /W$(__git_ps1 " (%s)")]/$ ''
ZSH:
setopt PROMPT_SUBST ; PS1=''[%n@%m %c$(__git_ps1 " (%s)")]/$ ''
Pero tenga en cuenta que solo git 1.9.3 (mayo de 2014) o posterior le permite mostrar de forma segura ese nombre de sucursal (!)
Ver commit 8976500 por Richard Hansen ( richardhansen
) :
Tanto bash como zsh someten el valor de PS1 a la expansión de parámetros , sustitución de comandos y expansión aritmética.
En lugar de incluir el nombre de la rama sin escudar en
PS1
cuando se ejecuta en modo de dos o tres argumentos, construyaPS1
para hacer referencia a una variable que contiene el nombre de la rama.Debido a que las shells no se expanden recursivamente, esto evita la ejecución de código arbitrario por nombres de ramas especialmente diseñados, tales como
''$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)''.
¿Qué mente malvada nombraría una rama así? ;) ( Al lado de una mamá como en xkcd )
informes de still_dreaming_1 en los comentarios :
Esto parece funcionar muy bien si quieres un indicador de color con
xterm
(en mi.bashrc
):
PS1=''/[/e]0;/u@/h: /w/a/]/n${debian_chroot:+($debian_chroot)}/[/033[01;32m/]/u@/h/[/033[00m/]:/[/033[01;34m/]/w/[/033[00m/]$(__git_ps1)/$ ''
Todo es un color diferente, incluida la rama.
En Linux Mint 17.3 Cinnamon de 64 bits:
PS1=''${debian_chroot:+($debian_chroot)}/[/033[01;32m/]/u@/h/[/033[01;34m/] /w/[/033[00m/]$(__git_ps1) /$ ''
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/''
}
export PS1=''/[/e]0;/w/a/]/n/[/e[32m/]/u@/h /[/e[33m/]/w/[/e[0m/]$(parse_git_branch)/n/$ ''
vim ~/.bash
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/''
}
export PS1="/u@/h /[/033[32m/]/w/[/033[33m/]/$(parse_git_branch)/[/033[00m/] $"
Para reflejar los últimos cambios, ejecuta el siguiente comando
source ~/.bashrc
Salida:-
chandrakant@NDL41104 ~/Chandrakant/CodeBase/LaravelApp (development) $