TGViewer
dev notes dev notes @junsenior · 1.39K subscribers
Post #135 1.63K
Я уже давно не пользуюсь клиентами для GIT и перешёл на работу из командной строки. И сейчас расскажу почему это круто, какие в этом плюсы и опишу пару команд, о которых, как выяснилось, многие не знают.

Привязываться к какому-либо инструменту для работы с системой контроля версий, как по мне, плохой выбор.
Когда я только завёл этот канал - единственный инструмент, который я использовал для работы с git - IDE PHPStorm. Ну а что, удобно: Ctrl + K - открывается окно с изменениями, которые можно одной кнопкой закоммитить. Ctrl + Shift + K - вот и запушили. А потом получилось так, что передо мной оказалась консоль боевого сервера, где не было привычных комбинаций, были локальные изменения, которые нельзя было заливать. pull бросался ошибками, а когда с помощью stackoverflow изменения были закоммичены - выяснилось, что коммит надо отменить, а изменения сохранить. С того момента я решил, что нужно набивать команды из консоли, разбираться в том, что умеет git и через некоторое время понял, какие возможности и удивительную гибкость несёт за собой такой подход.

Во-первых, ты всегда и из любого места сможешь работать с git, и у тебя не будет паники в случае, если на другой машине стоит другая IDE.
Во-вторых, поработав пару недель ты запомнишь полезные команды, которые либо невозможно, либо очень сложно воспроизвести через IDE.

Но даже работая из консоли ограничиться стандартными git commit и git push получится только первое время, и только если ты работаешь один. Как только появляется команда - появляются конфликты в коде, которые надо уметь решать. Сейчас опишу несколько полезных команд и тонкостей, которые помогают мне при работе из консоли:

1. Многие знают про git log, который отображает ветку коммитов. Например, нужно убедиться, что rebase корректно перенёс твои изменения поверх master'а - git log это отобразит. Так же он отобразит хэши коммитов, авторов и дату изменений. Но мало кто знает про более мощный инструмент - git reflog.
reflog показывает историю комманд, которые ты делал и отображает, сколько действий назад они были выполнены:

  7a9d27f04 (HEAD -> ... HEAD@{0}: commit (amend): ...
f45c7d11b HEAD@{1}: commit (amend): ...
f6745f94a HEAD@{2}: commit (amend): ...
e2b332a3d HEAD@{3}: commit (amend): ...
aa08bbdcc HEAD@{4}: rebase finished: returning to refs/heads/...
aa08bbdcc HEAD@{5}: rebase: ...
d60786481 HEAD@{6}: rebase: ...
889cd8739 (origin/master, origin/HEAD, master) HEAD@{7}: rebase: checko
ut master

Вместо ... названия веток и commit-сообщений. HEAD@{0} - последнее изменение - git commit --amend. Например, что-то сломалось и ты решил откатить изменения, но при этом сохранить файлы. Например - откатим git commit --amend. Для этого выполняем:
git reset --soft HEAD@{4} - откатываемся до того состояния, которые были при HEAD@{4} - до rebase, а флаг --soft позволяет сохранить все изменения.
More from @junsenior
  1. Sep 28, 2026Сошлись две вещи. Первая - мой проект safemap.ai, про который я уже писал выше - интеракти…
  2. Sep 17, 2026Post #356
  3. Sep 15, 2026Увидел тут в x.com статистику вакансий по PHP и статистику вакансий по hh.ru в целом. Я на…
  4. Sep 12, 2026Вдохновившись проектом, где делали интерактивную карту с тем, как работает Postgres (писал…
  5. Sep 8, 2026OpenAI выложили блогпост https://openai.com/index/navier-stokes-solution/ Мы публикуем реш…
  6. Sep 8, 2026Если кто не знал, вокруг этого сейчас разгорается очень большой скандал с OpenAI. Кратко,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →