Come aggiungere più comandi a Git Bash?


63

Sto lavorando su Windows Machine e utilizzo bash shell che viene fornito con Git. Ma ci sono molte utility che mancano in questa versione della shell bash.

Come posso installare più comandi su questa shell?


3
Cosa hai provato
030

3
many utilities are missing in this version of bash shell. Aggiungi i comandi mancanti che desideri utilizzare.
030

3
Vedere serverfault.com/a/872557/212162 per un modo molto più recente e più semplice di utilizzare utility che non sono incluse per impostazione predefinita.
nextgentech,

Risposte:


16

Esistono due versioni di Git che probabilmente utilizzerai: la distribuzione msysgit o Cygwin .

Installazione di utilità aggiuntive per Cygwin

Sebbene potresti aver installato Git solo come parte dell'installazione di Cygwin (se hai utilizzato Cygwin), Cygwin ha un programma chiamato setup.exe che puoi usare per aggiungere pacchetti. In sostanza, tutto ciò che devi fare è eseguire setup.exee selezionare quali programmi vuoi installare quando arrivi alla finestra Seleziona pacchetti . L'introduzione qui offre una buona panoramica con immagini che descrivono in dettaglio il processo.

Il programma di installazione di Cygwin è abbastanza intelligente da capire che hai un'installazione preesistente e aggiungerà pacchetti alla tua installazione (invece di modificarla e ricominciare da capo).

MSYS

L'altra versione di Git che stai probabilmente usando (se non Cygwin) è msysgit. Poiché msysgit installa un ambiente Unix minimo che non è realmente compatibile con MinGW, finirai per dover installare la suite MinGW accanto a msysgit. La pagina Guida introduttiva a MinGW offre una panoramica dettagliata su come procedere con l'installazione di MinGW: poiché non ho esperienza personale con MinGW, tutto ciò che posso fare è riferirti alle loro istruzioni.

Dovrai quindi migrare l'installazione di msysgit in MinGW. Questo può essere ottenuto facendo quanto segue (preso da qui ). Dopo aver eseguito la seguente sequenza, MinGW dovrebbe trovare la tua installazione di 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

2
Per chiunque si chieda, non provare a utilizzare il programma di installazione di Cygwin sul pacchetto msysgit. Funziona in parte ... ma durante la risoluzione delle dipendenze, sostituirà sh.exe (che modifica significativamente l'ambiente).
Chris Betti,

5
Come faccio a sapere se il mio git-bash usa cygwin o msys?
lmo,

7
Ho installato da git-scm.com/download/win è msysgit o cygwin? EDIT Capito. Invece di eliminare questo commento, dirò che è msysgit.
Espiazione limitata il

3
@LimitedAtonement - Per favore, dì anche come l'hai capito, per altri lettori (come me) che si sono posti la stessa domanda.
Ioanna,

4
Puoi dire cosa hai installato eseguendo uname -onel terminale bash.
Cliff Armstrong,

5

Con le recenti installazioni di Git per Windows , l'installazione di script e programmi shell aggiuntivi è piuttosto semplice.

Ti consiglio di installare git usando chocolatey choco install git , perché puoi aggiornare git (e tutti gli altri strumenti installati con chocolatey) eseguendolo choco upgrade all.

Metti semplicemente gli eseguibili in C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Esempio per git-fresh

Copia il file git-fresh in C:\Program Files\Git\usr\bin.

Esempio per adr-tools

  1. Scarica un pacchetto zip dalla pagina dei rilasci
  2. Decomprimi il pacchetto
  3. Copia tutto da src/inC:\Program Files\Git\usr\bin

4

Se stai usando msysgit, una semplice opzione è quella di installare MinGW e quindi aggiungere il percorso MINGW al file .bashrc che stai usando per la tua installazione di Git:

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

... dove MINGW è dove hai installato MinGW

In questo modo puoi usare gli strumenti MinGW direttamente dalla tua installazione di Git bash e se hai bisogno di un altro strumento bash puoi semplicemente installarlo su MinGW.


1

Puoi scaricare ulteriori unità Unix Wget, Hugo, Xpdf, make, Nanoda qui: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

wget

  • Scarica l'ultimo binario wget per windows da eternamente abitato (sono disponibili come zip con documentazione o solo un exe)
  • Se hai scaricato lo zip, estrai tutto (se l'utilità zip integrata di Windows dà un errore, usa 7-zip ).
  • Rinominare il file wget64.exein wget.exese necessario.
  • Sposta wget.exenel tuo Git\mingw64\bin\.

Nota: ho notato alcuni bug durante l'utilizzo di Wget su Git Bash per creare file WARC. Per un uso più complesso di Wget, considera invece Cygwin .

Hugo

Il generatore di siti statici Hugo può essere scaricato come binario e non ha un programma di installazione. Rilasciandolo nel tuo binaggiungilo facilmente al tuo percorso Git Bash. Prendi la versione di Windows a 64 bit dalla pagina delle versioni . Decomprimi il download, quindi copia hugo.exenella tua Git\mingw64\bindirectory.

xpdf

Xpdf è una pratica utility per manipolare file PDF.

rendere

  • Vai a ezwinports .
  • Scarica make-4.1-2-without-guile-w32-bin.zip( scarica la versione senza astuzia).
  • Estrai zip.
  • Copia i contenuti nella Git\mingw64\fusione delle cartelle, ma NON sovrascrivere / sostituire i file esistenti.

nano

A partire dal 2018, le recenti versioni di Git Bash includono Nano, quindi non è necessario!

  • Scarica il binario Nano dalla pagina di supporto di Win32 Nano . Hai solo bisogno del .exefile, che è chiamato nano-git-0d9a7347243.exe(al momento della stesura).
  • Rinominare il file in nano.exee copiarlo nella mingw64\bindirectory.
  • Questa versione di Nano non funzionerà solo con Git Bash, ma può essere invocata usando winpty, ad esempio winpty nano test.txt,.

1

Oggi ho trovato una risposta piuttosto semplice per cui ha funzionato rsync.

  1. Installa git bash per Windows
  2. Scarica rsyncda futureware.at *
  3. Estrai ovunque, scelgo C:\rsync-3.1.2-2-x86_64.pkg
  4. Aggiungi la cartella bin all'inizio del percorso di sistema

* Non so chi c'è dietro futureware.at, preferirei collegarmi a una fonte più primaria.


@mike la tua risposta è simile, tranne per il fatto che non ho installato cygwin64
geneorama il

1

Ho provato il seguente e ho installato emacs per git-bash .. 1. Installa msys2 da qualche parte (non deve essere lo stesso computer). 2. In msys2, eseguire quanto segue:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copia emacs.tar.gzda dove puoi accedere da git-bash, quindi sotto git-bash:

    tar zxf emacs.tar.gz -C / emacs

Tutto qui, buona fortuna.

Dopo il primo post, ho provato un altro computer ma non funzionava. Si scopre che mancano alcune DLL in git-bash. Quindi ho testato in una macchina virtuale pulita con i seguenti passaggi:

  1. Installa msys2-x86_64-20180531 e Git-2.19.1-64-bit .

  2. Aggiorna msys2, apri la console msys64 ed esegui:

    pacman -Syyu
    

    Chiudere la console msys64 quando richiesto, quindi eseguire nuovamente il comando sopra.

  3. Ottieni i file emacs come i passaggi precedenti (esegui quanto segue in 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 volta ho provato i passaggi precedenti in / d / tmp anziché / tmp e non sono stato in grado di installare emacs su di esso.

  4. Apri git-bash ed estrai i file emacs:

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

    Si lamenterà della mancanza della libreria condivisa "?" sul tentativo di eseguire emacs ora. Il "?" non sarà rivelato a nessun leggibile

  5. Torna a msys64 e ottieni le dll msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. In git-bash confronta le dll 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
    

    Nel mio caso, ci sono 26 DLL in diff_dlls.txt.

  7. Copia le dll da msys64 a git-bash:

    In msys64:

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

    In git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Tutto fatto, ora emacs gira in git-bash. Alcune delle 26 DLL potrebbero non essere necessarie, ma preferirei risparmiare tempo invece di spazio su disco.


0

Se ho usato Git bash per Windows (MinGW64), ho avuto delle difficoltà a ottenere rsync da aggiungere ad esso. continuato a ricevere errore: dup () in / out / err non riuscito

Invece, usando Cygwin ha funzionato alla fine.

I passaggi che ho preso per usare rysnc in Gitbash per Windows

  1. Installa gitbash per Windows
  2. Installa cygwin64
  3. Aggiungi il percorso cygwin alla variabile del percorso di Windows

    Windows-> Sistema-> Impostazioni avanzate-> Variabili d'ambiente

    Aggiungi un percorso per C: \ cygwin64 \ bin \

  4. Chiudi e riapri gitbash Ora gitbash troverà rsync.exe nel cygwin \ bin
  5. Stavo ottenendo un errore di versione incompatibile per cygwin1.dll

    *** errore irreversibile - rilevata mancata corrispondenza della base cygheap

  6. Anche se alcuni hanno detto che un riavvio risolverà questo, non ha funzionato.
  7. Per risolvere l'errore di versione, ho copiato la directory cygwin \ bin da una versione precedente di cygwin - la versione 1.7.30 ha funzionato


0

Si potrebbe estendere il numero di funzionalità in git-bash creando script e chiamandoli definendoli nel ~/.bash_profilefile.

Esempio

Se si desidera utilizzare il watchcomando, è possibile aggiungere questo script a ~/.bash_profile:

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

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

e avvolgilo all'interno di una funzione:

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

Non appena si salva il file e si esegue source ~/.bash_profilequindi si dovrebbe essere in grado di guardare l'output dei comandi.



-1

aggiungere rsync

Puoi scaricare il file rsync direttamente da mysys . Basta cercare la pagina per rsync e scegliere quella con la data più recente / il numero dell'ultima versione.
Decomprimere questo file ( rsync-3.1.3-1-x86_64.pkg.tar.xz) tramite

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

Quindi copia rsync su ./usr/bin/rsync.exe e incollalo nella cartella / usr / bin dell'installazione di Git.
Sulla mia macchina, cioèC:/Program Files/Git/usr/bin/

Puoi vedere la posizione della tua installazione di Git tramite

where git

Ecco un repository gist di hisplan che contiene istruzioni insieme a un collegamento alla versione 3.1.3-1 su rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Nota: non è stato possibile decomprimere il rsync-3.1.3-1-x86_64.pkg.tar.xzfile direttamente nella cartella Git, poiché le autorizzazioni non lo consentivano. E Git Bash non ha sudo.
Ma potrei decomprimerlo direttamente nella mia cartella Download senza problemi.
È altrettanto bene, perché è rsync.execomunque necessario solo il file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.