Как настроить завершение командной строки git bash?


133

Например, на новой машине ubuntu я только что запустил sudo apt-get git, и при вводе нет завершения, например git check[tab].

Я ничего не нашел на http://git-scm.com/docs , но в наши дни завершение IIRC включено в пакет git, и мне просто нужна правильная запись в моем bashrc.


У меня работает "из коробки" на Ubuntu Precise (и Fedora 17).
Механическая улитка

2
Чтобы проверить, стоит он у вас по умолчанию или нет, можно запустить (cd ~ && exec cat .bashrc | grep completion).
aderchox

Ответы:


184

В Linux

в большинстве дистрибутивов скрипт завершения git устанавливается в /etc/bash_completion.d/(или /usr/share/bash-completion/completions/git) при установке git, нет необходимости переходить на github. Вам просто нужно его использовать - добавьте эту строку в свой .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

В некоторых версиях Ubuntu автозаполнение git может не работать по умолчанию, переустановка с помощью этой команды должна исправить это:

sudo apt-get install git-core bash-completion

На Mac

Вы можете установить завершение git с помощью Homebrew или MacPorts.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(обновленная версия) Обратите особое внимание на то, какая версия bash у вас установлена, поскольку MacOS по умолчанию поставляется с выпуском 3.2.57 (1).

добавить в .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

Для более старых версий bash: brew install bash-completion

добавить в .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

затем добавьте это в свой .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

больше информации в этом руководстве: Установите завершение Bash git

Обратите внимание, что во всех случаях вам необходимо создать новую оболочку (открыть новую вкладку / окно терминала), чтобы изменения вступили в силу.


1
В большинстве ящиков * nix (особенно в Ubuntu) этот файл уже есть, поэтому простая передача его моему пользователю решила мою проблему. Спасибо.
nevvermind

5
ubuntu может иметь это как /etc/bash_completion.d/git-prompt
Catskul

2
У меня есть Git, но нет /etc/bash_completion.d
sixty4bit

15
В моем Ubuntu 14.04 это файл /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptиспользуется для поддержки подсказок git, а не для завершения.
Рэй Чен

18
ПРЕДУПРЕЖДЕНИЕ: Mac метод доморощенного работает только если у вас установлен мерзавец через самодельный делать brew uninstall bash-completionто , brew install gitесли бы вы мерзавец установить через какой - то другой метод раньше, то вышеуказанные шаги будут работать.
patapouf_ai

66

У меня была такая же проблема, выполните следующие действия:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

затем добавьте следующие строки в свой .bash_profile(обычно в вашу домашнюю папку)

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

источник: http://code-worrier.com/blog/autocomplete-git/


Я был за прокси, поэтому мне пришлось сначала настроить прокси, чтобы завиток работал, export https_proxy=proxy_ip:proxy_portя действительно не понимаю, почему он не получает настройки из системы.
Madlymad

2
на самом деле нет необходимости скрывать этот файл точкой перед его именем. Также: осторожно с версиями git (см. Ответ wisbucky)
Уолтер Тросс

42

Большинство инструкций, которые вы видите, говорят вам о загрузке

https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

и укажите это в сценарии запуска bash, например .bashrc .

Но с этим есть проблема, потому что он ссылается на masterветку, которая является последней версиейgit-completion.bash . Проблема в том, что иногда он ломается, потому что несовместим с установленной вами версией git.

Фактически, прямо сейчас это сломается, потому что в masterветке git-completion.bashесть новые функции, требующие git v2.18, до которых еще не обновился ни один из менеджеров пакетов и установщиков. Вы получите ошибкуunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Поэтому самым безопасным решением является ссылка на версию / тег, соответствующий установленному вами git. Например:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Обратите внимание, что v2.17.в URL-адресе вместо master. И затем, конечно, обязательно укажите это в сценарии запуска bash.


Это лучший ответ для macOS.
AShelly

Ничего себе ... Примерно через час, когда я трепался над этим, ваш комментарий был ключевым. Спасибо за это решение! Золотой!
Myke Carter

4
Файл, специфичный для версии macos, уже должен быть здесь на диске: на /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashвсякий случай я сравнил его с версией 2.17.1 на github, и он совпадает.
jmt

18

Ubuntu 14.10

Установить git-coreиbash-completion

sudo apt-get install -y git-core bash-completion
  • Для текущего использования сеанса

    source /usr/share/bash-completion/completions/git
  • Чтобы он всегда был включен на всех сессиях

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

1
Спасибо, у меня это сработало на Ubuntu 16.04 LTS :)
Мрунал Пагнис


6

Просто сделайте это в своем ~/.bashrc:

source /usr/share/bash-completion/completions/git

Другие ответы говорят вам установить bash-completion, вам не нужно этого делать, но если вы это сделаете, тогда нет необходимости напрямую указывать завершение. Вы делаете то или другое, а не то и другое одновременно.

Более общее решение - запрос местоположения системы в соответствии с рекомендациями проекта завершения bash:

source "$(pkg-config --variable=completionsdir bash-completion)"/git

1
Ваше универсальное решение отлично работало для меня на Ubuntu 18.04. Для начала, ваш метод очень лаконичен - спасибо!
Джейсон Р. Стивенс CFA

4

на моем ubuntu здесь установлен файл:

source /etc/bash_completion.d/git-prompt

вы можете перейти по ссылкам в /usr/lib/git-coreпапке. Вы можете найти там инструкцию, как настроить PS1 или использовать__git_ps1


3

Может быть кому-то полезно: -

После загрузки .git-Completion.bash по следующей ссылке,

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

и пытаясь использовать функцию __git_ps1, я получал ошибку:

 -bash: __git_ps1: command not found

Очевидно, нам нужно загрузить скрипты отдельно от мастера, чтобы эта команда работала, поскольку __git_ps1 определен в git-prompt.sh. Так же, как при загрузке .git-Completion.bash, получите git-prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

а затем добавьте следующее в свой .bash_profile

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git выполнит загруженный файл и

export PS1='\W$(__git_ps1 "[%s]") команда добавит имя ветки оформления заказа после текущего рабочего каталога (если это репозиторий git).

Так это будет выглядеть: -

dir_Name[branch_name] где dir_Name - это имя рабочего каталога, а branch_name - это имя ветки, над которой вы сейчас работаете.

Обратите внимание - __git_ps1 чувствителен к регистру.


1

Arch Linux

Источник /usr/share/git/completion/git-completion.bashв одном из файлов запуска bash.

Например:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Вы можете найти сценарий в других местах, например, /usr/share/bash-completion/completions/gitно эти сценарии у меня не работали.


-1

Ubuntu

Существует прекрасный ответ здесь . Работал у меня на Ubuntu 16.04

Windows

Git Bash - это инструмент для автоматического завершения. Не уверен, что это часть стандартного распространения, поэтому вы можете найти эту ссылку также полезной. Кстати, Git Bash позволяет использовать команды оболочки Linux для работы с окнами, что очень удобно для людей, имеющих опыт работы в среде GNU / Linux.


-1

На Github в проекте Git они предоставляют файл bash для автозаполнения команд git.

Вы должны загрузить его в домашний каталог и заставить bash запустить его. Это просто два шага, которые прекрасно объяснены (шаг за шагом) в следующем сообщении блога.

блог code-worrier: autocomplete-git /

Я тестировал его на Mac, он должен работать и на других системах. Вы можете применить тот же подход к другим операционным системам.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.