Comment ajouter plus de commandes à Git Bash?


63

Je travaille sur la machine Windows et j'utilise le shell bash fourni avec Git. Mais il existe de nombreux utilitaires qui manquent dans cette version de shell bash.

Comment puis-je installer plus de commandes sur ce shell?


3
Qu'as-tu essayé?
030

3
many utilities are missing in this version of bash shell. Veuillez ajouter les commandes manquantes que vous souhaitez utiliser.
030

3
Consultez serverfault.com/a/872557/212162 pour une manière beaucoup plus récente et plus simple d'utiliser des utilitaires qui ne sont pas inclus par défaut.
nextgentech

Réponses:


16

Vous utiliserez probablement deux versions de Git: la distribution msysgit ou Cygwin .

Installation d'utilitaires supplémentaires pour Cygwin

Bien que vous n’ayez peut-être installé que Git dans le cadre de votre installation de Cygwin (si vous avez utilisé Cygwin), Cygwin dispose d’un programme appelé setup.exe que vous pouvez utiliser pour ajouter des packages. Pour l'essentiel, tout ce que vous avez à faire est d'exécuter setup.exeet de choisir les programmes que vous souhaitez installer lorsque vous accédez à la fenêtre Sélectionner des packages . L'introduction ici fournit un bon aperçu avec des images qui détaillent le processus.

Le programme d’installation de Cygwin est suffisamment intelligent pour comprendre que vous avez une installation préexistante et il ajoutera des packages à votre installation (au lieu de la remplacer et de recommencer).

MSYS

L'autre version de Git que vous utilisez probablement (sinon Cygwin) est msysgit. Comme msysgit installe un environnement minimal Unix peu compatible avec MinGW, vous devrez installer la suite MinGW à côté de msysgit. La page Mise en route de MinGW donne un aperçu détaillé de la procédure d’installation de MinGW. Comme je n’ai aucune expérience personnelle de MinGW, tout ce que je peux faire, c’est que vous pouvez vous reporter à leurs instructions.

Vous devrez ensuite migrer votre installation msysgit vers MinGW. Ceci peut être accompli en procédant comme suit (pris ici ). Une fois la séquence suivante effectuée, MinGW devrait rechercher votre installation 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
Pour ceux qui se demandent, n'essayez pas d'utiliser le programme d'installation de cygwin sur le paquet msysgit. Cela fonctionne partiellement ... mais en résolvant les dépendances, il remplacera sh.exe (ce qui change votre environnement de manière significative).
Chris Betti

5
Comment savoir si mon compte git-bash utilise cygwin ou msys?
Lmo

7
J'ai installé depuis git-scm.com/download/win est-ce que msysgit ou cygwin? EDIT Je l'ai compris. Plutôt que de supprimer ce commentaire, je dirai que c'est msysgit.
Expiation limitée

3
@LimitedAtonement - Indiquez également comment vous avez compris, pour les autres lecteurs (comme moi) qui se sont posé la même question.
Ioanna

4
Vous pouvez dire ce que vous avez installé en exécutant uname -odans le terminal bash.
Cliff Armstrong le

5

Avec les récentes installations de Git for Windows , l’installation de scripts et de programmes shell supplémentaires est assez facile.

Je recommande d'installer git en utilisant chocolatey choco install git , car vous pouvez mettre à jour git (et tous les autres outils installés avec chocolatey) en exécutant choco upgrade all.

Il suffit de mettre les exécutables dans C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Exemple pour git-fresh

Copiez le fichier git-fresh dans C:\Program Files\Git\usr\bin.

Exemple pour adr-tools

  1. Télécharger un package zip à partir de la page des versions
  2. Décompressez le paquet
  3. Tout copier de src/dansC:\Program Files\Git\usr\bin

4

Si vous utilisez msysgit, une option simple consiste simplement à installer MinGW , puis à ajouter le chemin MINGW au fichier .bashrc que vous utilisez pour votre installation Git:

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

... où MINGW est où vous avez installé MinGW

De cette façon, vous pouvez utiliser les outils MinGW directement depuis votre installation Git bash. Si vous avez besoin d'un autre outil bash, vous pouvez simplement l'installer dans MinGW.


1

Vous pouvez télécharger des unités Unix supplémentaires à Wget, Hugo, Xpdf, make, Nanopartir d’ici: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Téléchargez le dernier fichier binaire wget pour windows d’ éternallybored (ils sont disponibles au format zip avec documentation, ou tout simplement un fichier exe)
  • Si vous avez téléchargé le zip, extrayez tout (si Windows construit dans l'utilitaire zip donne une erreur, utilisez 7-zip ).
  • Renommez le fichier wget64.exeà wget.exesi nécessaire.
  • Déplacer wget.exeà votre Git\mingw64\bin\.

Note: J'ai remarqué quelques bugs lors de l'utilisation de Wget sur Git Bash pour créer des fichiers WARC. Pour une utilisation plus complexe de Wget, envisagez plutôt Cygwin .

Hugo

Le générateur de site statique Hugo peut être téléchargé en tant que fichier binaire et ne dispose pas d'un programme d'installation. Le déposer dans votre binajoute facilement à votre chemin Git Bash. Prenez la version Windows 64 bits à partir de la page des versions . Décompressez le téléchargement, puis copiez-le hugo.exedans votre Git\mingw64\binrépertoire.

Xpdf

Xpdf est un utilitaire pratique pour manipuler des fichiers PDF.

  • Téléchargez la version Windows "Outils Xpdf" .
  • Extrait zip.
  • Copiez le contenu de xpdf-tools-win-4.00\bin64\dans votre Git\mingw64\bin\.
  • Consultez la documentation pour vous familiariser avec des outils tels que pdftotextet pdftopng.

faire

  • Allez à ezwinports .
  • Télécharger make-4.1-2-without-guile-w32-bin.zip(obtenez la version sans astuce).
  • Extrait zip.
  • Copiez le contenu dans vos Git\mingw64\dossiers fusionnés, mais NE écrasez / remplacez aucun fichier existant.

Nano

À compter de 2018, les versions récentes de Git Bash incluent Nano, c'est donc inutile!

  • Téléchargez le fichier binaire Nano à partir de la page d’ assistance Nano win32 . Vous avez juste besoin du .exefichier, qui est nommé nano-git-0d9a7347243.exe(à ce jour).
  • Renommez le fichier nano.exeet copiez-le dans le mingw64\binrépertoire.
  • Cette version de Nano ne fonctionnera pas avec Git Bash seul, mais peut être appelée en utilisant winpty, par exemple winpty nano test.txt,.

1

J'ai trouvé une réponse assez simple aujourd'hui qui a fonctionné rsync.

  1. Installez git bash pour Windows
  2. Télécharger rsyncdepuis futureware.at *
  3. Extrait n'importe où, je choisis C:\rsync-3.1.2-2-x86_64.pkg
  4. Ajouter le dossier bin en haut de votre chemin système

* Je ne sais pas qui est derrière Futureware.at, je préférerais créer un lien vers une source plus primaire.


@mike votre réponse est similaire, sauf que je n'ai pas installé cygwin64
geneorama

1

J'ai essayé ce qui suit et installé emacs sur git-bash .. 1. Installez msys2 quelque part (ne doit pas nécessairement être le même ordinateur). 2. Sous msys2, exécutez ce qui suit:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copiez emacs.tar.gzoù vous pouvez accéder depuis git-bash, puis sous git-bash:

    tar zxf emacs.tar.gz -C / emacs

C'est tout, bonne chance.

Après le premier post, j'ai essayé un autre ordinateur mais je ne travaillais pas. Il se trouve que certaines DLL sont manquantes dans git-bash. Ensuite, j'ai testé sur une machine virtuelle propre en procédant comme suit:

  1. Installez msys2-x86_64-20180531 et Git-2.19.1-64-bit .

  2. Mettez à jour msys2, ouvrez la console msys64 et exécutez:

    pacman -Syyu
    

    Fermez la console msys64 à l'invite, puis réexécutez la commande ci-dessus.

  3. Obtenez les fichiers emacs comme dans les étapes précédentes (procédez comme suit dans 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: J'ai déjà essayé les étapes ci-dessus dans / d / tmp au lieu de / tmp et je n’ai pas pu y installer emacs.

  4. Ouvrez git-bash et extrayez les fichiers emacs:

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

    Il va se plaindre manquant bibliothèque partagée "?" en essayant de lancer Emacs maintenant. Le "?" ne sera révélé à aucun lisible

  5. Retournez à msys64 et récupérez les dlls msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. Dans git-bash, comparez les dll avec 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
    

    Dans mon cas, il y a 26 dll dans diff_dlls.txt.

  7. Copiez les dll de msys64 dans git-bash:

    Dans 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. Tout est terminé, maintenant emacs s'exécute en git-bash. Certaines des 26 dll ne sont peut-être pas nécessaires, mais je préférerais gagner du temps plutôt que de l'espace disque.


0

Si vous utilisez Git bash pour Windows (MinGW64), j’ai eu beaucoup de difficulté à faire ajouter rsync. continué à avoir l'erreur: dup () in / out / err a échoué

Au lieu de cela, utiliser Cygwin a finalement fonctionné.

Mesures prises pour utiliser rysnc dans Gitbash pour Windows

  1. Installer gitbash pour Windows
  2. Installez cygwin64
  3. Ajouter le chemin cygwin à la variable chemin Windows

    Windows-> Système-> Réglages avancés-> Variables d'environnement

    Ajouter un chemin pour C: \ cygwin64 \ bin \

  4. Fermer et rouvrir gitbash Maintenant, gitbash trouvera le fichier rsync.exe dans le répertoire cygwin \ bin
  5. Je recevais une erreur de version incompatible pour cygwin1.dll

    *** erreur fatale - incompatibilité base cygheap détectée

  6. Bien que certains aient dit qu'un redémarrage règlerait ce problème, ce n'était pas le cas.
  7. Pour résoudre l'erreur de version, j'ai copié le répertoire cygwin \ bin à partir d'une ancienne version de cygwin - la version 1.7.30 a fonctionné.

Ne fais pas ça. Voir Utiliser l'exécutable cygwin dans le script git bash pour savoir pourquoi.
MikeJRamsey56

0

On pourrait augmenter le nombre de fonctionnalités de git-bash en créant des scripts et les appeler en les définissant dans le ~/.bash_profilefichier.

Exemple

Si l'on souhaite utiliser la watchcommande, ce script pourrait être ajouté à la ~/.bash_profile:

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

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

et l'envelopper dans une fonction:

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

Dès que vous enregistrez le fichier et que vous l'exécutez, source ~/.bash_profilevous devriez pouvoir regarder le résultat des commandes.



-1

ajouter rsync

Vous pouvez télécharger le fichier rsync directement à partir de mysys . Il suffit de rechercher rsync dans la page et de choisir celle avec le dernier numéro de version.
Décompressez ce fichier ( rsync-3.1.3-1-x86_64.pkg.tar.xz) via

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

Ensuite, copiez rsync à ./usr/bin/rsync.exe et collez-le dans le dossier / usr / bin de votre installation Git.
Sur ma machine, c'estC:/Program Files/Git/usr/bin/

Vous pouvez voir l’emplacement de votre installation Git via

where git

Voici un référentiel conforme à son plan qui contient des instructions et un lien vers la version 3.1.3-1 sur rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Remarque: je ne pouvais pas décompresser le rsync-3.1.3-1-x86_64.pkg.tar.xzfichier directement dans le dossier Git, car les autorisations ne le permettaient pas. Et Git Bash n'a pas de sudo.
Mais je pourrais le décompresser directement dans mon dossier Téléchargements sans problème.
C’est aussi bien, car vous n’avez besoin que du rsync.exefichier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.