Знаете ли вы, что в 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.
Вообщем, получается, это очень малоизвестная «фишка» и плохо задокументированная. Поэтому и решил поделиться с вами информацией о ней.