Привязываться к какому-либо инструменту для работы с системой контроля версий, как по мне, плохой выбор.
Когда я только завёл этот канал - единственный инструмент, который я использовал для работы с 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 позволяет сохранить все изменения.