2012-03-03 4 views
22

Я имею тенденцию иметь длинные названия ветвей для git (например, step110_create_search_engine_to_replace_google).Есть ли ярлык для имени ветки git?

Как я могу обращаться к нему просто как step110 в операциях checkout/commit?

+2

активировали вы на 'вно/полный/GIT-completion.bash' правила мерзавец AutoCompletion? Вы должны иметь возможность набирать 'git checkout step110 ' и иметь свою оболочку для автоматического заполнения имени ветки. – simont

+0

Привет, Симон, кажется, это ответ, который я ищу. Не могли бы вы рассказать мне, как активировать git-завершение и переместить его, чтобы ответить, чтобы я мог его принять? Большое спасибо. – AdamNYC

ответ

29

Если вы используете Unix-подобную систему (Linux, Mac OS X, возможно, другие), есть набор правил автозаполнения bash contrib/complete/git-completion.bash, который позволит вам автоматически заполнять команды git (вы можете ввести git checkout step110<tab> и свой оболочка автозаполнение-имя филиала

Для активации этого:.

  • Если у вас есть источник GIT, в contrib/complete/ есть файл git-completion.bash Положи куда-нибудь безопасное (как ~/.git-completion), а затем добавить. следующую строку в ваш файл ~/.bashrc: source ~/.git-completion. задайте сеанс оболочки или запустите source ~/.git-completion, чтобы запустить его в текущем сеансе оболочки.
  • Если у вас dont есть источник git, вы можете получить скрипт от here (github.com). Затем следуйте тем же инструкциям, что и выше.

Если вам повезет, достаточно использовать zsh вместо bash, я знаю, что oh-my-zsh имеет GIT AutoCompletion плагинов (я не знаю, как их активировать без oh-my-zsh).

Источники:

+0

'.bashrc' не работал,' .bash_profile' работал для меня – Jiemurat

1

Я просто хочу добавить, что этот файл, как правило, уже поставляется с мерзавцем. Вам не нужно загружать его снова. Вам просто нужно найти его и запустить.

В моей системе (Centos OS) следующие шаги работы:

$ locate completion.bash 
/usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 
$ source /usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 

Obvioiusly как уже отмечалось, это лучше, чтобы добавить эту строку в файл .bashrc в вашем домашнем каталоге, так что вы не нужно повторять его каждый раз, когда вы открываете новую оболочку.

В моем случае я хотел бы добавить последнюю команду в мой файл .bashrc

source /usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 
12

Вот как я установил его на OS X ...

Проверьте, если это в вашей локальной системе первой. Кажется, MacPorts и Homebrew загружают его для вас.

$ find/-name "git-completion.bash" 

В противном случае, загрузите его ...

$ wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion 

Если у вас нет wget, вы можете установить его легко с Homebrew или использовать cURL.

$ vim ~/.profile 

... или ваш редактор по выбору.

Затем добавить ...

source ~/.git-completion 

Если автозаполнение не работает автоматически ...

$ source ~/.profile 

... и тогда у вас есть Git автодополнение.

+2

Я не уверен, почему я об этом не знал, но это так здорово. Гит должен сделать это из коробки. – jhoff

+0

Работает как очарование! –

+0

В OSX, если вы установили git через MacPort, у вас будет скрипт в этом месте: /opt/local//share/doc/git-core/contrib/completion/git-completion.bash – kakyo

1

Попробуйте этот псевдоним:

cb = "!checkoutbranch() { local branches=`git branch | grep -i $1 | tr -d '* '`; if [[ `echo \"$branches\" | wc -l | tr -d ' '` != 1 ]]; then echo \"Matched multiple branches:\"; git branch | grep --color -i $1; exit 1; fi; git checkout $branches; }; checkoutbranch" 

чекаут develop филиал:

git cb dev 
+0

Очень, очень круто. И работает как очарование! Просто передайте ему любую подстроку в имени ветки, и она будет выбрана для вас. Отличная идея. Это то, что я искал - вкладка слишком медленная и неуклюжая для меня. – Koshmaar

+0

@ Koshmaar лучшая версия https://gist.github.com/iwill/88f5835bfc4e58aa1a88 – iwill

+0

Хорошо, я попробую это через несколько часов, когда на работе. До сих пор, используя этот псевдоним, у меня есть два комментария: 1. Я хотел заменить git checkout для него (с типичным псевдонимом g co), к сожалению, он не поддерживает коммиты и файлы. Вы знаете, git позволяет делать git co и git co <имя_файла для возврата из индекса>. 2. В целом, я думаю, что наличие этой функциональности в большем количестве мест, где вы можете передать branchname, было бы потрясающе. – Koshmaar

0

git symbolic-ref может помочь вам, если вы слишком ленивы, чтобы нажать TAB как я.

$ git symbolic-ref refs/heads/s1 refs/heads/step110_create_search_engine_to_replace_google 
$ git reset --hard s1 
$ git checkout -b s1-experiment s1 

Вы можете псевдоним удаленного филиала, чтобы пропустить набрав remote/TAB. (Префикс с refs/tags/, чтобы предотвратить проблемы)

$ git symbolic-ref refs/tags/base refs/remotes/github/a-branch-to-which-you-dont-want-to-push 
$ git rebase -i base 
Смежные вопросы