¿Cómo agregar más comandos a Git Bash?

63

Estoy trabajando en la máquina de Windows y uso bash shell que viene con Git. Pero hay muchas utilidades que faltan en esta versión de bash shell.

¿Cómo puedo instalar más comandos en este shell?

Ankit Zalani
fuente
3
¿Qué intentaste?
030
3
many utilities are missing in this version of bash shell. Agregue qué comandos faltan que le gustaría usar.
030
3
Visite serverfault.com/a/872557/212162 para obtener una forma mucho más reciente y fácil de utilizar utilidades que no están incluidas de manera predeterminada.
nextgentech

Respuestas:

16

Hay dos versiones de Git que probablemente usará: la distribución msysgit o Cygwin .

Instalación de utilidades adicionales para Cygwin

Aunque es posible que solo haya instalado Git como parte de su instalación de Cygwin (si usó Cygwin), Cygwin tiene un programa llamado setup.exe que puede usar para agregar paquetes. Esencialmente, todo lo que tiene que hacer es ejecutar setup.exey seleccionar qué programas desea instalar cuando llegue a la ventana Seleccionar paquetes . La introducción aquí proporciona una buena descripción general con imágenes que detallan el proceso.

El instalador de Cygwin es lo suficientemente inteligente como para darse cuenta de que tiene una instalación preexistente, y agregará paquetes a su instalación (en lugar de eliminarla y comenzar de nuevo).

MSYS

La otra versión de Git que probablemente esté usando (si no es Cygwin) es msysgit. Debido a que msysgit instala un entorno Unix mínimo que no es realmente compatible con MinGW, terminará teniendo que instalar la suite MinGW junto a msysgit. La página de inicio de MinGW ofrece una descripción detallada de cómo instalar MinGW, ya que no tengo experiencia con MinGW personalmente, todo lo que puedo hacer es remitirlo a sus instrucciones.

Luego tendrá que migrar su instalación de msysgit a MinGW. Esto se puede lograr haciendo lo siguiente (tomado de aquí ). Una vez que se realiza la siguiente secuencia, MinGW debe encontrar su instalación de Git.

cd GITDIR # Where GITDIR is wherever inside Program Files you put Git
cp bin/git* /MINGW/bin # Where MINGW is wherever you put MinGW
cp -r libexec/git* /MINGW/libexec
cp -r share/git* /MINGW/share
nuevo123456
fuente
2
Para cualquiera que se pregunte, no intente utilizar el instalador de cygwin en el paquete msysgit. Funciona parcialmente ... pero al resolver dependencias, reemplazará sh.exe (que cambia su entorno significativamente).
Chris Betti
55
¿Cómo sé si mi git-bash usa cygwin o msys?
lmo
77
Lo instalé desde git-scm.com/download/win, ¿eso es msysgit o cygwin? EDITAR Lo descubrí. En lugar de eliminar este comentario, diré que es msysgit.
Expiación limitada el
3
@LimitedAtonement: diga también cómo lo resolvió, para otros lectores (como yo) que se han hecho la misma pregunta.
Ioanna
44
Puede saber qué ha instalado ejecutando uname -oen el terminal bash.
Cliff Armstrong
5

Con las recientes instalaciones de Git para Windows , la instalación de scripts y programas de shell adicionales es bastante fácil.

Recomiendo instalar git usando chocolatey choco install git , porque puedes actualizar git (y todas las otras herramientas instaladas con chocolatey) ejecutando choco upgrade all.

Simplemente ponga los ejecutables en C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Ejemplo para git-fresh

Copie el archivo git-fresh a C:\Program Files\Git\usr\bin.

Ejemplo para adr-tools

  1. Descargue un paquete zip de la página de lanzamientos
  2. Descomprima el paquete
  3. Copie todo de src/aC:\Program Files\Git\usr\bin
koppor
fuente
4

Si está utilizando msysgit, una opción simple es instalar MinGW y luego agregar la ruta MINGW al archivo .bashrc que está utilizando para su instalación de Git:

    PATH=$PATH:/MINGW/msys/1.0/bin

... donde MINGW es donde instaló MinGW

De esa manera, puede usar las herramientas MinGW directamente desde su instalación de Git bash, y si necesita otra herramienta bash, simplemente puede instalarla en MinGW.

Arnaldo C
fuente
1

Puede descargar unidades Unix adicionales Wget, Hugo, Xpdf, make, Nanodesde aquí: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Descargue el último binario de wget para Windows desde eternamente aburrido (están disponibles como un zip con documentación, o simplemente un exe)
  • Si descargó el archivo zip, extraiga todo (si la utilidad integrada de Windows presenta un error, use 7-zip ).
  • Cambie el nombre del archivo wget64.exea wget.exesi es necesario.
  • Muévete wget.exea tu Git\mingw64\bin\.

Nota: He notado algunos errores al usar Wget en Git Bash para crear archivos WARC. Para un uso más complejo de Wget, considere Cygwin en su lugar.

Hugo

El generador de sitios estáticos de Hugo se puede descargar como binario y no tiene un instalador. Soltarlo en tu binfácilmente lo agrega a tu ruta de Git Bash. Tome la versión de Windows de 64 bits de la página de lanzamientos . Descomprima la descarga, luego cópiela hugo.exeen su Git\mingw64\bindirectorio.

Xpdf

Xpdf es una práctica utilidad para manipular archivos PDF.

hacer

  • Ir a ezwinports .
  • Descargar make-4.1-2-without-guile-w32-bin.zip(obtener la versión sin engaño).
  • Extraer cremallera.
  • Copie el contenido a la Git\mingw64\fusión de las carpetas, pero NO sobrescriba / reemplace ningún archivo existente.

Nano

A partir de 2018, las versiones recientes de Git Bash incluyen Nano, ¡así que esto es innecesario!

  • Descargue el binario Nano de la página de soporte Nano win32 . Solo necesita el .exearchivo, que se llama nano-git-0d9a7347243.exe(a partir de este escrito).
  • Cambie el nombre del archivo nano.exey cópielo en el mingw64\bindirectorio.
  • Esta versión de Nano no funcionará solo con Git Bash, pero puede invocarse usando winpty, por ejemplo winpty nano test.txt,.
GKislin
fuente
1

Encontré una respuesta bastante simple hoy que funcionó rsync.

  1. Instalar git bash para Windows
  2. Descargar rsyncdesde futureware.at *
  3. Extracto a cualquier lugar, elijo C:\rsync-3.1.2-2-x86_64.pkg
  4. Agregue la carpeta bin a la parte superior de la ruta del sistema

* No sé quién está detrás de futureware.at, preferiría vincular a una fuente más primaria.

geneorama
fuente
@mike tu respuesta es similar, excepto que no instalé cygwin64
geneorama
1

Intenté lo siguiente e instalé emacs en git-bash .. 1. Instale msys2 en algún lugar (no tiene que ser la misma computadora). 2. En msys2, ejecute lo siguiente:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copie emacs.tar.gza donde puede acceder desde git-bash, luego en git-bash:

    tar zxf emacs.tar.gz -C / emacs

Eso es todo, buena suerte.

Después de la primera publicación, probé con otra computadora pero no funcionaba. Resulta que faltan algunos dlls en git-bash. Luego probé en una máquina virtual limpia con los siguientes pasos:

  1. Instale msys2-x86_64-20180531 y Git-2.19.1-64-bit .

  2. Actualice msys2, abra la consola msys64 y ejecute:

    pacman -Syyu
    

    Cierre la consola msys64 cuando se le solicite, luego ejecute el comando anterior nuevamente.

  3. Obtenga archivos emacs como los pasos anteriores (ejecute lo siguiente en msys64):

    cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
    mv emacs.tar.gz /c/tmp
    

    ps: una vez probé los pasos anteriores en / d / tmp en lugar de / tmp y no pude instalar emacs.

  4. Abra git-bash y extraiga archivos emacs:

    cd /c/tmp
    tar zxf emacs.tar.gz -C /
    

    Se quejará de la falta de biblioteca compartida "?" en tratar de ejecutar emacs ahora. Los "?" no será revelado a ningún legible

  5. Regrese a msys64 y obtenga los dlls de msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. En git-bash compare dlls con msys:

    cd /c/tmp
    git init
    git add 1.txt && git commit
    ls --color=never /bin/*.dll | sed 's#\*$##g' > /c/tmp/1.txt
    git diff 1.txt | grep '^-' | sed '1d' | sed 's#^-/bin/##g' > diff_dlls.txt
    

    En mi caso, hay 26 dlls en diff_dlls.txt.

  7. Copie los dlls de msys64 a git-bash:

    En msys64:

    mkdir /c/tmp/dlls
    cat /c/tmp/diff_dlls.txt | xargs -I {} cp /bin/{} /c/tmp/dlls
    

    En git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Todo listo, ahora emacs se ejecuta en git-bash. Algunos de los 26 dlls pueden no ser necesarios, pero preferiría ahorrar mi tiempo en lugar de espacio en disco.

chenxin
fuente
0

Si utilizo Git bash para Windows (MinGW64), me costó mucho agregarle rsync. siguió obteniendo error: dup () in / out / err falló

En cambio, usar Cygwin funcionó eventualmente.

Pasos que tomé para usar rysnc en Gitbash para Windows

  1. Instalar gitbash para windows
  2. Instalar cygwin64
  3. Agregue la ruta cygwin a la variable de ruta de Windows

    Windows-> Sistema-> Ajustes avanzados-> Variables de entorno

    Agregue una ruta para C: \ cygwin64 \ bin \

  4. Cierre y vuelva a abrir gitbash Ahora gitbash encontrará el rsync.exe en cygwin \ bin
  5. Estaba recibiendo un error de versión incompatible para cygwin1.dll

    *** error fatal: se detectó una falta de coincidencia de base de cygheap

  6. Aunque algunos dijeron que un reinicio solucionará esto, no fue así.
  7. Para resolver el error de versión, copié el directorio cygwin \ bin de una versión anterior de cygwin - la versión 1.7.30 funcionó
Miguel
fuente
No hagas esto. Consulte Usar el ejecutable cygwin en el script git bash para saber por qué.
MikeJRamsey56
0

Se podría ampliar el número de características en git-bash creando scripts y llamarlos definiéndolos en el ~/.bash_profilearchivo.

Ejemplo

Si a uno le gustaría usar el watchcomando, entonces este script podría agregarse a ~/.bash_profile:

https://gist.github.com/espaciomore/28e24ce4f91177c0964f4f67bb5c5fda

ARGS="${@}"
clear;
while(true); do
  OUTPUT=`$ARGS`
  clear
  echo -e "${OUTPUT[@]}"
done

y envolverlo dentro de una función:

watch() {
  ARGS="${@}"
  clear;
  while(true); do
    OUTPUT=`$ARGS`
    clear
    echo -e "${OUTPUT[@]}"
  done
}

Tan pronto como se guarda el archivo y se ejecuta source ~/.bash_profile, se debe poder ver la salida de los comandos.

030
fuente
-1

para agregar rsync

Puede descargar el archivo rsync directamente desde mysys . Simplemente busque rsync en la página y elija la que tenga la última fecha / número de versión más reciente.
Descomprima este archivo ( rsync-3.1.3-1-x86_64.pkg.tar.xz) a través de

tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz

Luego copie rsync en ./usr/bin/rsync.exe y péguelo en la carpeta / usr / bin de su instalación de Git.
En mi máquina, eso esC:/Program Files/Git/usr/bin/

Puede ver la ubicación de su instalación de Git a través de

where git

Aquí hay un repositorio general de hisplan que tiene instrucciones junto con un enlace a la versión 3.1.3-1 en rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Nota: No pude descomprimir el rsync-3.1.3-1-x86_64.pkg.tar.xzarchivo directamente en la carpeta Git, porque los permisos no lo permitieron. Y Git Bash no tiene sudo.
Pero podría descomprimirlo directamente en mi carpeta de descargas sin ningún problema.
Es igual de bueno, porque de rsync.exetodos modos solo necesita el archivo.

SherylHohman
fuente