Подборка удобных Git-алиасов от разработчика
12К открытий13К показов
Рассказывает Тим Петтерсен
В 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) развивался в течение нескольких лет, поэтому я и сам уже смутно понимаю, что он делает. Но выглядит он точно неплохо:
Вот стандартный вид git log
для сравнения:
Форматировать вывод можно как угодно, так что берите мой вариант за основу и фантазируйте ?
Кстати, вот другой удобный вариант — git lg.
Если у вас есть полезные алиасы, делитесь ими в комментариях!
12К открытий13К показов