Як додати більше команд до Git Bash?


63

Я працюю на машині Windows, і я використовую bash shell, який поставляється з Git. Але є багато утиліт, яких не вистачає в цій версії bash shell.

Як я можу встановити більше команд на цю оболонку?


3
Що ви спробували?
030

3
many utilities are missing in this version of bash shell. Додайте, які команди відсутні, які ви хочете використовувати.
030

3
Див. Сервер default.com/a/872557/212162 про набагато новіший та простіший спосіб використання утиліт, які не включені за замовчуванням.
nextgentech

Відповіді:


16

Існує дві версії Git, які ви, ймовірно, використовуєте - дистрибуція msysgit або Cygwin .

Встановлення додаткових утиліт для Cygwin

Хоча ви, можливо, встановили Git лише в рамках встановлення Cygwin (якщо ви використовували Cygwin), у Cygwin є програма під назвою setup.exe, яку ви можете використовувати для додавання пакетів. По суті, все, що вам потрібно зробити, це запустити setup.exeі вибрати, які програми ви хочете встановити, коли ви потрапите у вікно Select Packages . Вступ тут дає хороший огляд зображень, які детально описують процес.

Інсталятор Cygwin досить розумний, щоб зрозуміти, що у вас є вже існуюча установка, і він додасть пакунки до вашої установки (замість того, щоб знімати її і починати заново).

MSYS

Інша версія Git, яку ви, ймовірно, використовуєте (якщо не Cygwin) - це msysgit. Оскільки msysgit встановлює мінімальне середовище Unix, яке не дуже сумісне з MinGW, вам доведеться встановити пакет MinGW поруч з msysgit. На сторінці MinGW Початок роботи ви знайдете детальний огляд того, як рухатись із встановленням MinGW - оскільки я особисто не маю досвіду роботи з MinGW, все, що я насправді можу зробити, - це віднести вас до їхніх інструкцій.

Тоді вам доведеться перенести встановлення msysgit в MinGW. Це можна досягти, виконавши наступне (взято звідси ). Після виконання наступної послідовності MinGW має знайти вашу установку 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
Для всіх, хто цікавиться, не намагайтеся використовувати інсталятор cygwin у пакеті msysgit. Він частково працює ... але, вирішуючи залежності, він замінить sh.exe (що істотно змінює ваше середовище).
Кріс Бетті

5
Як дізнатися, чи мій git-bash використовує cygwin чи msys?
lmo

7
Я встановив з git-scm.com/download/win це msysgit чи cygwin? EDIT Зрозумів це. Замість того, щоб видалити цей коментар, я скажу, що це msysgit.
Обмежене спокутування

3
@LimitedAtonement - Скажіть також, як ви це зрозуміли, для інших читачів (як я), які задали собі те саме питання.
Іоанна

4
Ви можете сказати, що ви встановили, запустивши uname -oв терміналі bash.
Кліфф Армстронг

5

З недавніми установками Git для Windows встановити додаткові сценарії оболонки та програми досить просто.

Я рекомендую встановити git за допомогою шоколаду choco install git , оскільки ви можете оновити git (та всі інші інструменти, встановлені з шоколадом), виконавши choco upgrade all.

Просто помістіть виконувані файли в C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Приклад для git-fresh

Скопіюйте файл git-fresh в C:\Program Files\Git\usr\bin.

Приклад для adr-інструментів

  1. Завантажте поштовий пакет зі сторінки випусків
  2. Розпакуйте пакет
  3. Скопіюйте все src/зсерединиC:\Program Files\Git\usr\bin

4

Якщо ви використовуєте msysgit, простим варіантом є просто встановити MinGW, а потім додати шлях MINGW до файлу .bashrc, який ви використовуєте для установки Git:

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

... де MINGW - там, де ви встановили MinGW

Таким чином, ви можете використовувати інструменти MinGW безпосередньо зі своєї установки Git bash, а якщо вам потрібен інший інструмент bash, ви можете просто встановити його на MinGW.


1

Ви можете завантажити додаткові підрозділи Unix Wget, Hugo, Xpdf, make, Nanoзвідси: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Завантажте найсвіжіший wget binary для Windows з вічноборідних (вони доступні у вигляді поштової скриньки з документацією або просто в exe)
  • Якщо ви завантажили zip, витягніть всі (якщо вікна, вбудовані у програму zip, видають помилку, використовуйте 7-zip ).
  • Перейменуйте файл wget64.exeу wget.exeразі потреби.
  • Перемістіться wget.exeдо свого Git\mingw64\bin\.

Примітка. Я помітив деякі помилки під час використання Wget на Git Bash для створення файлів WARC. Для більш складного використання Wget, розгляньте замість Cygwin .

Гюго

Статичний генератор сайту Hugo може бути завантажений як двійковий і не має інсталятора. Якщо потрапити в ваш binлегко, додайте його до шляху Git Bash. Візьміть 64-бітну версію Windows зі сторінки випусків . Розпакуйте завантаження та скопіюйте hugo.exeу свій Git\mingw64\binкаталог.

Xpdf

Xpdf - це зручна утиліта для роботи з файлами PDF.

  • Завантажте версію Windows "Інструменти Xpdf" .
  • Витягувати блискавку.
  • Скопіюйте вміст xpdf-tools-win-4.00\bin64\у своє Git\mingw64\bin\.
  • Перевірте документи, щоб розпочати роботу з такими інструментами, як pdftotextі pdftopng.

зробити

  • Перейдіть на ezwinports .
  • Завантажити make-4.1-2-without-guile-w32-bin.zip(отримати версію без підступу).
  • Витягувати блискавку.
  • Скопіюйте вміст Git\mingw64\у папки, що об’єднуються, але НЕ перезаписуйте та не замінюйте жодних існуючих файлів.

Нано

Станом на 2018 рік, останні версії Git Bash включають Nano, тому це зайве!

  • Завантажте бінарний файл Nano зі сторінки підтримки Nano win32 . Вам просто потрібен .exeфайл, який названий nano-git-0d9a7347243.exe(станом на цей текст).
  • Перейменуйте файл у nano.exeта скопіюйте у mingw64\binкаталог.
  • Ця версія Nano не працюватиме з Git Bash в поодинці, але може бути викликана winpty, наприклад, winpty nano test.txt.

1

Сьогодні я знайшов досить просту відповідь, на яку працював rsync.

  1. Встановіть git bash для Windows
  2. Завантажити rsyncз futureware.at *
  3. Витягую куди завгодно, я вибираю C:\rsync-3.1.2-2-x86_64.pkg
  4. Додайте папку bin у верхній частині вашого системного шляху

* Я не знаю, хто стоїть за futureware.at, я вважаю за краще посилання на більш первинне джерело.


@mike ваша відповідь схожа, за винятком того, що я не встановив cygwin64
geneorama

1

Я спробував наступні і встановив emacs для git-bash .. 1. Встановіть msys2 десь (не повинен бути той же комп'ютер). 2. Під msys2 запустіть наступне:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Скопіюйте emacs.tar.gzтуди, куди ви можете отримати доступ з git-bash, а потім під git-bash:

    tar zxf emacs.tar.gz -C / emacs

Ось і все, удачі.

Після першого повідомлення я спробував інший комп’ютер, але не працював. Виявляється, у джит-баші бракує деяких дл. Потім я перевірив чисту віртуальну машину з наступними кроками:

  1. Встановіть msys2-x86_64-20180531 та Git-2.19.1-64-біт .

  2. Оновіть msys2, відкрийте консоль msys64 та запустіть:

    pacman -Syyu
    

    Коли з’явиться запит, закрийте консоль msys64, а потім знову запустіть вищевказану команду.

  3. Отримайте файли emacs як попередні кроки (виконайте наступне в 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: Я одного разу спробував описані вище кроки в / d / tmp замість / tmp і не зміг встановити на нього emacs.

  4. Відкрийте git-bash та витягніть файли emacs:

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

    Він скаржиться на відсутність спільної бібліотеки "?" про спробу запустити emacs зараз. "?" не буде виявлено для будь-якого читабельного

  5. Поверніться до msys64 і отримайте dys:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. У git-bash порівняйте dlls з 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
    

    У моєму випадку в diff_dlls.txt є 26 dll.

  7. Скопіюйте dlls з msys64 в git-bash:

    У msys64:

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

    У git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Все готово, тепер Emacs працює в git-bash. Деякі з 26 dll можуть не знадобитися, але я вважаю за краще заощадити свій час замість місця на диску.


0

Якщо ви використовуєте Git bash для Windows (MinGW64), мені було дуже важко отримати rsync, щоб до нього додати. не вдалося отримати помилку: помилка dup () в / в / помилка

Натомість використання Cygwin працювало врешті-решт.

Кроки, які я взяв, щоб використовувати rysnc в Gitbash для Windows

  1. Встановіть gitbash для windows
  2. Встановіть cygwin64
  3. Додайте шлях до cygwin до змінної шляху Windows

    Windows-> Система-> розширені налаштування-> Змінні середовища

    Додати шлях для C: \ cygwin64 \ bin \

  4. Закрийте та знову відкрийте gitbash. Тепер gitbash знайде rsync.exe у cygwin \ bin
  5. Я отримував несумісну помилку версії для cygwin1.dll

    *** фатальна помилка - виявлено невідповідність основи cygheap

  6. Хоча деякі кажуть, що перезавантаження це виправить, це не вдалося.
  7. Щоб вирішити помилку версії, я скопіював каталог cygwin \ bin зі старої версії cygwin - працювала версія 1.7.30

Не робіть цього. Для цього див. Розділ Використання виконуваного файлу cygwin у скрипті git bash .
MikeJRamsey56

0

Можна розширити кількість функцій у git-bash, створивши скрипти та викликати їх, визначивши їх у ~/.bash_profileфайлі.

Приклад

Якщо ви хочете скористатися watchкомандою, цей скрипт можна додати до ~/.bash_profile:

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

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

і оберніть її всередині функції:

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

Щойно файл зберігається і запускається, source ~/.bash_profileслід спостерігати за результатами команд.



-1

Додати rsync

Ви можете завантажити файл rsync безпосередньо з mysys . Просто знайдіть на сторінці rsync і виберіть ту, де є остання дата / номер останньої версії.
Розпакуйте цей файл ( rsync-3.1.3-1-x86_64.pkg.tar.xz) через

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

Потім скопіюйте rsync у ./usr/bin/rsync.exe та вставте його у папку / usr / bin вашої установки Git.
На моїй машині, тобтоC:/Program Files/Git/usr/bin/

Ви можете бачити місце установки Git через

where git

Ось істотне репо від hisplan, який містить інструкції разом із посиланням на версію 3.1.3-1 на rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Примітка. Не вдалося розпакувати rsync-3.1.3-1-x86_64.pkg.tar.xzфайл безпосередньо в папку Git, оскільки дозволи не дозволяли. І у Гіт Баша немає судо.
Але я міг розпакувати його безпосередньо в папку "Завантаження" без проблем.
Це так само добре, адже rsync.exeфайл вам все одно потрібен .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.