Подборка удобных Git-алиасов от разработчика

Рассказывает Тим Петтерсен 


В Git большое внимание уделяется обратной совместимости: многие мощные функции спрятаны в виде опций. К счастью, Git поддерживает алиасы, поэтому можно создать свои команды для полной реализации Git-магии. Вот подборка самых полезных алиасов, определённых в моём .gitconfig.

git please

Каждый разработчик когда-нибудь общался с тимлидом на тему использования push --force в публичных ветках. rebase, amend и squash — это весело, но лишь до тех пор, пока вы не сломаете что-нибудь на сервере. К счастью, Git не позволит просто взять и переписать историю коммитов. Для этого команде push потребуется передать опцию --force. Но у неё есть побочный эффект — команда заменяет ветку вашей локальной версией, а все неизвлечённые изменения сотрутся из истории.

Опция –force-with-lease гораздо более приятна: она проверяет локальную копию перед перезаписью. Это значит, что изменения хотя бы будут извлечены. Поскольку команду git push --force-with-lease печатать достаточно долго, я создал вежливый алиас: git please.

git commend

Когда-нибудь коммитили и вдруг осознавали, что забыли проиндексировать файл? Больше не о чем волноваться! git commend по-тихому прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение.

git it

Первый коммит в репозитории нельзя переместить, как любой другой, поэтому стоит всегда создавать пустой коммит в качестве корневого. git it одновременно инициализирует репозиторий и создаёт пустой коммит. Надо использовать git it!

git staaash

git stash — это одна из самых полезных команд. Она берет изменения в отслеживаемых файлах и откладывает их для дальнейшего использования, освобождая поле для дальнейших действий. Однако неиндексированные, неотслеживаемые и игнорируемые файлы команда не трогает.

Я создал несколько удобных сокращений для различные вариаций команды:

Самый последний вариант всегда откатит состояние проекта так, будто это только что сделанный клон репозитория.

git shorty

Команду git status я точно использую чаще, чем любую другую. Команда очень полезна и понятна новичкам, но для более продвинутых пользователей её вывод слишком громоздок. Вот типичный пример:

git shorty сообщает мне тоже самое так:

git merc

Если вы не используете перемещение, использование стандартной команды git merge для слияния веток с главной — не лучший вариант. По умолчанию эта команда использует опцию --ff, которая создаст merge-коммит только в случае отсутствия изменений в мастер-ветке, а иначе просто переместит её на последний коммит.

git merc использует --no-ff, что всегда создаёт merge-коммит. Кстати, именно такая опция используется по умолчанию в Bitbucket.

git grog

Мой алиас git grog (graphical log) развивался в течение нескольких лет, поэтому я и сам уже смутно понимаю, что он делает. Но выглядит он точно неплохо:

3

Вот стандартный вид git log для сравнения:

4

Форматировать вывод можно как угодно, так что берите мой вариант за основу и фантазируйте 🙂

Кстати, вот другой удобный вариант — git lg.


Если у вас есть полезные алиасы, делитесь ими в комментариях!

Перевод статьи «Lesser known Git commands»