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

63

Я работаю на машине Windows, и я использую оболочку Bash, которая поставляется с Git. Но есть много утилит, которые отсутствуют в этой версии оболочки Bash.

Как я могу установить больше команд в этой оболочке?

Анкит Залани
источник
3
Что ты пробовал?
0:30
3
many utilities are missing in this version of bash shell, Пожалуйста, добавьте, какие команды отсутствуют, которые вы хотели бы использовать.
0:30
3
См. Serverfault.com/a/872557/212162, чтобы узнать о более новом и простом способе использования утилит, которые не включены по умолчанию.
nextgentech

Ответы:

16

Вы можете использовать две версии Git - дистрибутив msysgit или Cygwin .

Установка дополнительных утилит для Cygwin

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

Установщик 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
new123456
источник
2
Для тех, кто интересуется, не пытайтесь использовать установщик cygwin в пакете msysgit. Это частично работает ... но при разрешении зависимостей он заменит sh.exe (который значительно меняет вашу среду).
Крис Бетти
5
Как узнать, использует ли мой git-bash cygwin или msys?
ИМО
7
Я установил с git-scm.com/download/win это msysgit или cygwin? РЕДАКТИРОВАТЬ понял это. Вместо того, чтобы удалить этот комментарий, я скажу, что это msysgit.
Ограниченное искупление
3
@LimitedAtonement - Пожалуйста, также скажите, как вы это поняли, для других читателей (таких как я), которые задали себе тот же вопрос.
Иоанна
4
Вы можете сказать, что вы установили, запустив uname -oв терминале bash.
Клифф Армстронг
5

С недавними установками Git для Windows установка дополнительных скриптов и программ оболочки довольно проста.

Я рекомендую установить git с помощью chocolatey choco install git , потому что вы можете обновить git (и все другие инструменты, установленные с chocolatey), выполнив choco upgrade all.

Просто поместите исполняемые файлы в C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Пример для git-fresh

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

Пример для adr-tools

  1. Загрузите zip-пакет со страницы релизов
  2. Распакуйте пакет
  3. Скопируйте все из src/вC:\Program Files\Git\usr\bin
koppor
источник
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 для windows от eternallybored (они доступны в виде zip с документацией или просто exe)
  • Если вы скачали zip, распакуйте все (если в Windows встроенная утилита 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 tools" .
  • Извлечь zip.
  • Скопируйте содержимое xpdf-tools-win-4.00\bin64\в свой Git\mingw64\bin\.
  • Проверьте документы, чтобы начать работу с такими инструментами, как pdftotextи pdftopng.

сделать

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

Nano

Начиная с 2018 года последние версии Git Bash включают Nano, так что в этом нет необходимости!

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

Сегодня я нашел довольно простой ответ, который сработал rsync.

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

* Я не знаю, кто стоит за futureware.at, я бы предпочел ссылку на более первоисточник.

geneorama
источник
@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

Вот и все, удачи.

После первого поста я попробовал другой компьютер, но не работал. Оказывается, в git-bash отсутствуют некоторые dll. Затем я проверил на чистой виртуальной машине следующие шаги:

  1. Установите msys2-x86_64-20180531 и Git-2.19.1-64-bit .

  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 и получите dll для msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. В git-bash сравните dll с 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. Скопируйте dll из msys64 в git-bash:

    В msys64:

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

    В гит-баш

    cp /c/tmp/dlls/* /bin
    
  8. Все сделано, теперь emacs работает в git-bash. Некоторые из 26 библиотек могут не понадобиться, но я бы предпочел сэкономить свое время вместо дискового пространства.

Chenxin
источник
0

Если я использую Git bash для Windows (MinGW64), мне было очень трудно добавить в него rsync. продолжал получать ошибку: dup () in / out / err не удалось

Вместо этого использование 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
Майк
источник
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его, вы сможете наблюдать за выводом команд.

+030
источник
-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

Вот репозиторий Gist его плана, который имеет инструкции вместе со ссылкой на версию 3.1.3-1 на rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Примечание: я не смог распаковать rsync-3.1.3-1-x86_64.pkg.tar.xzфайл прямо в папку Git, потому что разрешения не позволили. И у Git Bash нет sudo.
Но я мог распаковать его прямо в папку «Загрузки» без проблем.
Это так же хорошо, потому что в rsync.exeлюбом случае вам нужен только файл.

SherylHohman
источник