Я имею тенденцию иметь длинные имена ветвей для git (например, step110_create_search_engine_to_replace_google).
Как мне обращаться к нему просто как step110 в операциях checkout/commit?
Я имею тенденцию иметь длинные имена ветвей для git (например, step110_create_search_engine_to_replace_google).
Как мне обращаться к нему просто как step110 в операциях checkout/commit?
Если вы используете Unix-подобную систему (Linux, Mac OS X, возможно, другие), там будет набор правил автозаполнения contrib/complete/git-completion.bash
bash, который позволит вам автоматически заполнять команды git (вы может набирать git checkout step110<tab>
, и ваша оболочка будет автозаполнять имя ветки.
Чтобы активировать это:
contrib/complete/
есть файл git-completion.bash
. Поместите это где-то в безопасное место (например, ~/.git-completion
), а затем добавьте следующую строку в ваш файл ~/.bashrc
: source ~/.git-completion
. Перезапустите сеанс оболочки или запустите source ~/.git-completion
, чтобы запустить его в текущем сеансе оболочки.Если вам посчастливилось использовать zsh
вместо bash
, я знаю, что oh-my-zsh
имеет git плагины автозаполнения (I ' m не уверен, как активировать их без oh-my-zsh
).
Источники:
Вот как я установил его на 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 автозаполнение.
Попробуйте этот псевдоним:
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
git symbolic-ref
может помочь, если вам лень даже нажать TAB. Вы можете создать псевдоним для ветки.
$ # Define short name 's1'
$ git symbolic-ref refs/heads/s1 refs/heads/step110_create_search_engine_to_replace_google
$
$ # You can use short name 's1' afterwards
$ git reset --hard s1
$ git checkout -b s1-experiment s1
$
$ # Remove the short name (don't use branch -d here or the original branch gets deleted!)
$ git symbolic-ref -d refs/heads/s1
Удаленные ветки можно ссылаться таким же образом, чтобы сохранить набор remote/
TAB. (В этом случае я рекомендую использовать префикс refs/tags/
вместо ссылок refs/heads/
для предотвращения случайного перемещения удаленного реф)
$ git symbolic-ref refs/tags/base refs/remotes/github/a-very-long-named-remote-branch
$ git rebase -i base
Я просто хочу добавить, что этот файл обычно уже поставляется с git. Вам не нужно загружать его снова. Вам просто нужно найти его и запустить.
В моей системе (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