Добавить в корзинуПозвонить
Найти в Дзене

Коллеги, всех приветствую

! История о том, как я вынужденно подружился с Git Долгое время пользовался Git очень "топорно", коммитил и пушил редко, а стандартный набор команд выглядел следующим образом: git status git add . git commit -m "Меняем N" git push Разработчиком я не был никогда, да и до сих пор не считаю таковым. Соответственно, с началом разработки собственного сайта, когда кодовая база выросла, а правки перешли в разряд "ежедневно" - старая стратегия "закоммитить всё и молиться" работать перестала. В день X поймал себя на мысли о том, что трачу много времени на решение конфликтов в ущерб написания кода. Ну и, безусловно, чуть не потерял 3 дня работы над фичей из-за того, что не знал, как бы так правильно подтянуть изменения из основной ветки, не затерев свои. Тут-то и пришлось копнуть глубже. Конечно, был осведомлен об обширности Git, о том, что это не просто "сохранить и отправить", но до такой степени погружения доходить не приходилось. Кому интересно, Git я использовал как облачное мультип

Коллеги, всех приветствую!

История о том, как я вынужденно подружился с Git

Долгое время пользовался Git очень "топорно", коммитил и пушил редко, а стандартный набор команд выглядел следующим образом:

git status

git add .

git commit -m "Меняем N"

git push

Разработчиком я не был никогда, да и до сих пор не считаю таковым. Соответственно, с началом разработки собственного сайта, когда кодовая база выросла, а правки перешли в разряд "ежедневно" - старая стратегия "закоммитить всё и молиться" работать перестала.

В день X поймал себя на мысли о том, что трачу много времени на решение конфликтов в ущерб написания кода. Ну и, безусловно, чуть не потерял 3 дня работы над фичей из-за того, что не знал, как бы так правильно подтянуть изменения из основной ветки, не затерев свои.

Тут-то и пришлось копнуть глубже. Конечно, был осведомлен об обширности Git, о том, что это не просто "сохранить и отправить", но до такой степени погружения доходить не приходилось.

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

—————

Разобрался я с ним подробнее и нашёл несколько приёмов, которые реально прокачивают опыт использования:

Вариант 1 (Сохранить изменения, но не коммитить - git stash):

git stash - временно убрать незакоммиченные изменения.

git stash pop - вернуть их обратно.

Зачем? Когда нужно переключиться на другую ветку, а код ещё не готов для коммита.

Вариант 2 (Править историю локально - git commit --amend):

Забыли добавить файл в коммит? Поправили и не хотите создавать отдельный коммит с сообщением "fix"? git add forgotten_file, потом git commit --amend - и один коммит, словно так и было.

Вариант 3 (Откатиться к состоянию репозитория - git reset):

git reset --soft HEAD~1 - убрать последний коммит, но сохранить изменения в рабочей папке. Переделать и закоммитить заново.

git reset --hard HEAD~1 - убрать последний коммит и изменения (аккуратно!).

Вариант 4 (Полезный инструмент - git reflog):

Сделали git reset --hard, и поняли, что удалили нужные изменения? git reflog показывает историю перемещений HEAD. Оттуда можно восстановить любое состояние репозитория.

Вариант 5 (Работа с удалёнными ветками):

git fetch --prune - удалить локальные ссылки на ветки, которых уже нет на удалённом репозитории. Держит локальный репозиторий в чистоте.

—————

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

У вас были инструменты, изучение которых вы долго игнорировали, а потом поняли, что они реально упрощают жизнь?

P.S. Забавно, что после того случая я начал коммитить чаще. Маленькие коммиты с понятными сообщениями. Конфликтов стало меньше, историю читать легче. Git перестал быть "сложной штукой".

🌐 @helcode