Як налаштувати заповнення командного рядка git bash?


130

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

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


Працює для мене з коробки на Ubuntu Precision (і Fedora 17).
Механічний равлик

2
Щоб перевірити, чи є він у вас за замовчуванням чи ні, можна запустити (cd ~ && exec cat .bashrc | grep completion).
адерхокс

Відповіді:


181

У 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.

Домашнє пиво

якщо $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) вже мають цей файл, тому просто пошук його моєму користувачеві вирішив мою проблему. Дякую.
неввермінд

5
ubuntu може мати його як /etc/bash_completion.d/git-prompt
Catskul

2
У мене є Git, але не /etc/bash_completion.d
шістдесят біт

13
У моєму 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

Нічого ... Приблизно через годину грізного мозку над цим, ваш коментар був ключовим. Дякую за це рішення! Золотий!
Майк Картер

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 :)
Mrunal Pagnis


5

Просто зробіть це у вашому ~/.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-complete.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

Мабуть, нам потрібно завантажити скрипти окремо від master, щоб ця команда працювала, як __git_ps1 визначено в git-prompt.sh. Так схоже на завантаження .git-завершення.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 - ім'я робочого каталогу, а ім'я гілки - ім’я гілки, над якою ви зараз працюєте.

Зверніть увагу - __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 для роботи над Windows, що є чудовою справою для людей, які мають досвід роботи в середовищі GNU / Linux.


-1

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

Ви повинні завантажити його в домашній каталог, і ви повинні змусити bash запустити його. Це просто два кроки та ідеально пояснено (крок за кроком) у наступній публікації блогу.

блог кодового попередження: autocomplete-git /

Я перевірив його на mac, він повинен працювати і в інших системах. Ви можете застосувати той самий підхід до інших операційних систем.

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