Git и ‘.’ (точка) как remote

Октябрь 21st, 2011 по Perlover Оставить ответ »

Знаете ли вы, что в git символ точка (dot — ‘.’) как имя для remote обозначает текущий репозитарий, в котором вы работаете? Когда-то я мельком нашел ссылку в документации на это, запомнил, и вот сегодня сделал вот это:

git push . my_temp_branch:master
# А так ещё проще и лучше:
git push . HEAD:master

И это сработало! Очень кстати полезно бывает привести ветку (например, master), от которой вы начали продолжать свою временную ветвь,  в соответствие с ней. Первое, что хочется сделать:

git checkout master
git merge my_temp_branch
git checkout my_temp_branch

Так и можно сделать, но это куча действий, плюс «передергивание» файлов (если открыт текстовый редактор, он может сыпать предупреждениями об открытых, но изменившихся файлах на диске), которые отслеживаются репозитарием из одного состояния в другое через checkout-ы. А вот если ветка master прямой потомок my_temp_branch, то вполне будет отлично работать первый мой пример (потому что там будет fast-forward метод — не требующий merge)

А потом мне стало интересно еще раз найти, где в документации git говорится о таком алиасе на local remote. Долго искал,  даже гуглил по инету — нигде нет! И вот единственное место — man git-config:


branch.<name>.merge
    ...
If you wish to setup git pull so that it merges into <name>
from another branch in the local repository,
you can point branch.<name>.merge to the desired branch,
and use the special setting . (a period) for branch.<name>.remote.

Вообщем, получается, это очень малоизвестная «фишка» и плохо задокументированная. Поэтому и решил поделиться с вами информацией о ней.

QR-Code этой страницы:

Комментарии запрещены.