Перевод статьи «5 Git Tricks Every Developer Should Know».
Система контроля версий играет важную роль в разработке программ и повседневной жизни разработчика. В этой статье мы разберем 5 приемов работы с Git, которые помогут вам повысить продуктивность, улучшить рабочий процесс и вообще стать git-ниндзя.
1. Как удалить все локальные ветки git, сохранив master
Разработчику часто приходится заниматься несколькими фичами, и для каждой требуется создание отдельной ветки. На каком-то этапе начинаешь теряться во множестве зря болтающихся локальных веток. У меня эта проблема возникает постоянно. Допустим, вы хотите избавиться от всех веток, за исключением master/main.
В этом вам поможет следующая команда:
git branch | grep -v “master” | xargs git branch -D
Примечание редакции Techrocks. В комментариях к оригинальной статье есть поправка:
«Эта команда удалит все ветки, которые не были смержены, что потенциально опасно. Лучше использовать опцию -d
, а не -D
. Если после этого останется пара неудаленных веток, их можно будет удалить по одной, когда удостоверитесь, что они вам точно больше не нужны».
2. Как отменить последний локальный коммит в Git?
Это один из наиболее часто задаваемых вопросов на Stack Overflow. Допустим, я закоммитил что-то по ошибке и теперь хочу это отменить. Вот для примера «ошибочный» коммит, который я сделал недавно и теперь хочу откатить назад.
git commit -m “Это была ошибка”
Любой предыдущий коммит можно сбросить, запустив команду git reset -- hard
, но это перезапишет мои локальные изменения (т. е. изменения, которые я сделал в локальных файлах). Есть лучший способ.
Самый последний коммит можно отменить, не затрагивая рабочее дерево (файлы на диске):
git reset HEAD~
После этого мы можем запустить git add и git commit, как делаем это обычно.
git add . git commit -m «сообщение»
3. Лучшая визуализация лога в терминале
Вам наверняка случалось использовать команду git log. Она выводит всю историю контроля версий в вашем терминале.
Как видите, в выводе мы получаем историю коммитов. Мы можем сделать вывод более интуитивным при помощи следующей команды:
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
Теперь вывод будет таким:
Как видите, этот вывод более информативен. Можно также просмотреть патч для каждого коммита, добавив к предыдущей команде флаг -p
.
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -p
4. Как удалить ветку git локально и из удаленного репозитория?
Для удаления локальной ветки можно запустить следующую команду:
git branch -d <имя-вашей-ветки>
Если хотите удалить ветку без проверки статуса мержа, используйте опцию -D
(шорткат для --delete --force
).
Для удаления ветки из remote-репозитория запустите следующую команду:
git push origin --delete <имя-ветки-в-удаленном-репозитории>
5. Применение изменений из другого репозитория
Допустим, нам нужно применить некоторые изменения из другого репозитория. Это можно сделать при помощи команд git fetch и git cherry-pick:
git fetch <url-удаленного-git-репозитория> <ветка> && git cherry-pick SHA1
Надеюсь, эти приемы вам пригодятся!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]