Jak dodać więcej poleceń do Git Bash?

63

Pracuję na komputerze z systemem Windows i używam powłoki bash, która jest dostarczana z Git. Ale w tej wersji powłoki bash brakuje wielu narzędzi.

Jak mogę zainstalować więcej poleceń w tej powłoce?

Ankit Zalani
źródło
3
Co próbowałeś?
030
3
many utilities are missing in this version of bash shell. Dodaj brakujące polecenia, których chcesz użyć.
030
3
Zobacz serverfault.com/a/872557/212162, aby uzyskać znacznie nowszy i łatwiejszy sposób korzystania z narzędzi, które nie są domyślnie dołączone.
nextgentech

Odpowiedzi:

16

Istnieją dwie wersje Gita, których prawdopodobnie będziesz używać - dystrybucja msysgit lub Cygwin .

Instalowanie dodatkowych narzędzi dla Cygwin

Chociaż mogłeś zainstalować Git tylko jako część instalacji Cygwin (jeśli korzystałeś z Cygwin), Cygwin ma program o nazwie setup.exe, którego możesz użyć do dodawania pakietów. Zasadniczo wszystko, co musisz zrobić, to uruchomić setup.exei wybrać programy, które chcesz zainstalować, gdy przejdziesz do okna Wybierz pakiety . Wprowadzenie tutaj zapewnia dobry przegląd ze zdjęciami szczegółowo opisującymi proces.

Instalator Cygwin jest wystarczająco inteligentny, aby dowiedzieć się, że masz już istniejącą instalację, i doda pakiety do twojej instalacji (zamiast nukania i rozpoczynania od nowa).

MSYS

Inną wersją Gita, której prawdopodobnie używasz (jeśli nie Cygwin) jest msysgit. Ponieważ msysgit instaluje minimalne środowisko uniksowe, które tak naprawdę nie jest kompatybilne z MinGW, będziesz musiał zainstalować pakiet MinGW obok msysgit. Strona Pierwsze kroki w MinGW zawiera szczegółowe omówienie sposobu instalacji MinGW - ponieważ nie mam osobistego doświadczenia z MinGW, mogę tylko odnieść się do ich instrukcji.

Następnie musisz przeprowadzić migrację instalacji msysgit do MinGW. Można to zrobić, wykonując następujące czynności (wzięte stąd ). Po wykonaniu następującej sekwencji MinGW powinien znaleźć instalację 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
nowy123456
źródło
2
Jeśli ktoś się zastanawia, nie należy próbować używać instalatora cygwin w pakiecie msysgit. Częściowo działa ... ale podczas rozwiązywania zależności zastąpi sh.exe (co znacznie zmienia twoje środowisko).
Chris Betti,
5
Skąd mam wiedzieć, czy mój git-bash używa cygwin lub msys?
lmo
7
Zainstalowałem z git-scm.com/download/win czy to msysgit czy cygwin? EDYCJA Rozgryzłem to. Zamiast usuwać ten komentarz, powiem, że to msysgit.
Ograniczone Zadośćuczynienie
3
@LimitedAtonement - Powiedz także, jak to wymyśliłeś, dla innych czytelników (takich jak ja), którzy zadali sobie to samo pytanie.
Ioanna,
4
Możesz powiedzieć, co zainstalowałeś, uruchamiając uname -ow terminalu bash.
Cliff Armstrong
5

Dzięki najnowszym instalacjom Git dla Windows instalacja dodatkowych skryptów powłoki i programów jest dość łatwa.

Polecam instalację git przy użyciu Chocolatey choco install git , ponieważ możesz zaktualizować git (i wszystkie inne narzędzia zainstalowane z Chocolatey), wykonując choco upgrade all.

Wystarczy umieścić pliki wykonywalne w C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Przykład dla git-fresh

Skopiuj plik git-fresh do C:\Program Files\Git\usr\bin.

Przykład dla narzędzi adr

  1. Pobierz pakiet zip ze strony uwalnia
  2. Rozpakuj paczkę
  3. Skopiuj wszystko od src/doC:\Program Files\Git\usr\bin
koppor
źródło
4

Jeśli używasz msysgit, prostą opcją jest po prostu zainstalowanie MinGW, a następnie dodanie ścieżki MINGW do pliku .bashrc, którego używasz do instalacji Gita:

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

... gdzie MINGW to miejsce, w którym zainstalowałeś MinGW

W ten sposób możesz korzystać z narzędzi MinGW bezpośrednio z instalacji bash Git, a jeśli potrzebujesz innego narzędzia bash, możesz po prostu zainstalować je w MinGW.

Arnaldo C
źródło
1

Możesz pobrać dodatkowe jednostki Unix Wget, Hugo, Xpdf, make, Nanotutaj: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Pobierz najnowszy plik binarny wget dla systemu Windows z wiecznie znudzonego (są one dostępne jako zip z dokumentacją lub po prostu exe)
  • Jeśli pobrałeś zip, rozpakuj wszystko (jeśli Windows wbudowany w narzędzie zip daje błąd, użyj 7-zip ).
  • W razie potrzeby zmień nazwę pliku wget64.exena wget.exe.
  • Przejdź wget.exedo swojego Git\mingw64\bin\.

Uwaga: zauważyłem kilka błędów podczas używania Wget na Git Bash do tworzenia plików WARC. W celu bardziej złożonego korzystania z Wget, zamiast tego rozważ Cygwin .

Hugo

Generator strony statycznej Hugo można pobrać jako plik binarny i nie ma instalatora. Upuszczenie go w binłatwy sposób dodaje go do ścieżki Git Bash. Pobierz 64-bitową wersję systemu Windows ze strony z wydaniami . Rozpakuj pobieranie, a następnie skopiuj hugo.exedo swojego Git\mingw64\binkatalogu.

Xpdf

Xpdf to przydatne narzędzie do manipulowania plikami PDF.

  • Pobierz wersję systemu Windows „Narzędzia Xpdf” .
  • Rozpakuj zip.
  • Skopiuj zawartość xpdf-tools-win-4.00\bin64\do swojego Git\mingw64\bin\.
  • Przejrzyj dokumenty, aby rozpocząć korzystanie z narzędzi takich jak pdftotexti pdftopng.

robić

  • Przejdź do ezwinports .
  • Pobierz make-4.1-2-without-guile-w32-bin.zip(pobierz wersję bez podstępu).
  • Rozpakuj zip.
  • Skopiuj zawartość do Git\mingw64\scalonych folderów, ale NIE nadpisuj / nie zastępuj żadnych istniejących plików.

Nano

Od 2018 r. Najnowsze wersje Git Bash zawierają Nano, więc nie jest to konieczne!

  • Pobierz plik binarny Nano ze strony wsparcia Nano dla win32 . Potrzebujesz tylko .exepliku o nazwie nano-git-0d9a7347243.exe(w momencie pisania).
  • Zmień nazwę pliku na nano.exei skopiuj do mingw64\binkatalogu.
  • Ta wersja Nano nie będzie działać z samym Git Bash, ale można ją wywołać winptyna przykład za pomocą winpty nano test.txt.
GKislin
źródło
1

Znalazłem dziś dość prostą odpowiedź, która zadziałała rsync.

  1. Zainstaluj git bash dla Windows
  2. Pobierz rsyncz futureware.at *
  3. Wyciągam gdziekolwiek, wybieram C:\rsync-3.1.2-2-x86_64.pkg
  4. Dodaj folder bin na górze ścieżki systemowej

* Nie wiem, kto stoi za futureware.at, wolę link do bardziej podstawowego źródła.

genorama
źródło
@mike, twoja odpowiedź jest podobna, tyle że nie zainstalowałem cygwin64
genorama
1

Próbowałem następujących i zainstalowałem emacsa na git-bash .. 1. Zainstaluj gdzieś msys2 (nie musi to być ten sam komputer). 2. W msys2 uruchom następujące polecenie:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Skopiuj emacs.tar.gzdo miejsca, w którym możesz uzyskać dostęp z git-bash, a następnie w git-bash:

    tar zxf emacs.tar.gz -C / emacs

To wszystko, powodzenia.

Po pierwszym poście wypróbowałem inny komputer, ale nie działałem. Okazuje się, że brakuje niektórych bibliotek dll w git-bash. Następnie przetestowałem na czystej maszynie wirtualnej, wykonując następujące czynności:

  1. Zainstaluj msys2-x86_64-20180531 i Git-2.19.1-64-bit .

  2. Zaktualizuj msys2, otwórz konsolę msys64 i uruchom:

    pacman -Syyu
    

    Po wyświetleniu monitu zamknij konsolę msys64, a następnie ponownie uruchom powyższe polecenie.

  3. Pobierz pliki emacs jak w poprzednich krokach (uruchom następujące polecenie w 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: Kiedyś wypróbowałem powyższe kroki w / d / tmp zamiast / tmp i nie byłem w stanie zainstalować na nim emacsa.

  4. Otwórz git-bash i wypakuj pliki emacsa:

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

    Narzeka na brak wspólnej biblioteki „?” na próbie uruchomienia emacsa teraz. „?” nie zostaną ujawnione żadnym czytelnym

  5. Wróć do msys64 i pobierz dlls msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. W git-bash porównaj dll z 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
    

    W moim przypadku w diff_dlls.txt znajduje się 26 bibliotek DLL.

  7. Skopiuj biblioteki DLL z msys64 do git-bash:

    W msys64:

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

    W git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Wszystko gotowe, teraz emacs działa w git-bash. Niektóre z 26 bibliotek DLL mogą nie być konieczne, ale wolę oszczędzać czas niż miejsce na dysku.

chenxin
źródło
0

Jeśli korzystam z Git bash dla Windows (MinGW64), bardzo trudno mi było dodać do niego rsync. ciągle pojawia się błąd: dup () in / out / err nie powiodło się

Zamiast tego korzystanie z Cygwin działało w końcu.

Kroki, które podjąłem, aby użyć rysnc w Gitbash na Windows

  1. Zainstaluj gitbash dla Windows
  2. Zainstaluj cygwin64
  3. Dodaj ścieżkę cygwin do zmiennej ścieżki systemu Windows

    Windows-> System-> ustawienia zaawansowane-> Zmienne środowiskowe

    Dodaj ścieżkę do C: \ cygwin64 \ bin \

  4. Zamknij i ponownie otwórz gitbash Teraz gitbash znajdzie rsync.exe w cygwin \ bin
  5. Otrzymałem błąd niekompatybilnej wersji dla cygwin1.dll

    *** błąd krytyczny - wykryto niedopasowanie bazy cygheap

  6. Chociaż niektórzy mówili, że ponowne uruchomienie naprawi to, ale tak nie było.
  7. Aby rozwiązać błąd wersji, skopiowałem katalog cygwin \ bin ze starszej wersji cygwin - działała wersja 1.7.30
Mikrofon
źródło
Nie rób tego Zobacz Używanie pliku wykonywalnego cygwin w skrypcie git bash, aby dowiedzieć się dlaczego.
MikeJRamsey56
0

Można zwiększyć liczbę funkcji git-bash, tworząc skrypty i wywołując je, definiując je w ~/.bash_profilepliku.

Przykład

Jeśli ktoś chce użyć watchpolecenia, ten skrypt można dodać do ~/.bash_profile:

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

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

i zawiń w funkcję:

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

Jak tylko zapiszesz plik i uruchomi się, source ~/.bash_profilepowinieneś być w stanie obejrzeć wynik poleceń.

030
źródło
-1

dodać rsync

Możesz pobrać plik rsync bezpośrednio z mysys . Wystarczy wyszukać stronę rsync i wybrać tę z najnowszą datą / najnowszym numerem wersji.
Rozpakuj ten plik ( rsync-3.1.3-1-x86_64.pkg.tar.xz) przez

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

Następnie skopiuj rsync ./usr/bin/rsync.exe i wklej go do folderu / usr / bin instalacji Git.
To znaczy na moim komputerzeC:/Program Files/Git/usr/bin/

Możesz zobaczyć lokalizację swojej instalacji Git poprzez

where git

Oto repozytorium gist autorstwa hisplan, które zawiera instrukcje wraz z linkiem do wersji 3.1.3-1 na rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Uwaga: Nie mogłem rozpakować rsync-3.1.3-1-x86_64.pkg.tar.xzpliku bezpośrednio do folderu Git, ponieważ uprawnienia na to nie pozwalały. A Git Bash nie ma sudo.
Ale mogę rozpakować go bezpośrednio do folderu Pobrane bez problemu.
Tak samo dobrze, bo i tak potrzebujesz tylko rsync.exepliku.

SherylHohman
źródło