Хочешь уверенно проходить IT-интервью?
Мы понимаем, как сложно подготовиться: стресс, алгоритмы, вопросы, от которых голова идёт кругом. Но с AI тренажёром всё гораздо проще.
💡 Почему Т1 тренажёр — это мастхэв?
- Получишь настоящую обратную связь: где затык, что подтянуть и как стать лучше
- Научишься не только решать задачи, но и объяснять своё решение так, чтобы интервьюер сказал: "Вау!".
- Освоишь все этапы собеседования, от вопросов по алгоритмам до диалога о твоих целях.
Зачем листать миллион туториалов? Просто зайди в Т1 тренажёр, потренируйся и уверенно удиви интервьюеров. Мы не обещаем лёгкой прогулки, но обещаем, что будешь готов!
Реклама. ООО «Смарт Гико», ИНН 7743264341. Erid 2VtzqwP8vqy
Статья "Git для начинающих" направлена на усовершенствование навыка его использования и исправление распространенных ошибок.
Рассмотрим различные ситуации из жизни разработчика (и не только). К каждой будет прилагаться правильное оптимальное решение.
Git для начинающих: основные команды
Git init
Чтобы создать в текущей директории поддиректорию .git
, где будут храниться все файлы репозитория, выполните git init
. Если поддиректория уже существует, при повторной аналогичной команде будет выведено сообщение Reinitialized existing Git repository in
.
Git add
Вам необходимо добавить в проект файлы с определенным расширением. Можно добавить все файлы по одному, но лучше использовать *.< имя_расширения>
, чтобы включить все файлы с этим расширением:
git add *.py
Если вы хотите добавить файлы с определенным расширением и следом указать имя каталога, то можно выполнить следующую команду. Она добавит все .py файлы из подкаталогов models/directory:
git add models/\*.py
Git clean
Допустим, вы создали несколько новых файлов или папок в ветке Git, а через время оказалось, что эти файлы больше не нужны. В этом случае нужно очистить свое рабочее дерево от лишних файлов (которые были добавлены с помощью git add) следующей командой:
git clean -df
Чтобы увидеть, какие untracked-файлы будут удалены, используйте команду:
git clean -dn
Git rm
Следующая команда в подборке "Git для начинающих" поможет удалить отслеживаемые файлы:
git rm <путь к файлу>
Если удаляемый файл находится в staging-области, нужно применить специальный флаг:
git rm <путь к файлу> -f
На случай если вы хотите удалить файлы из репозитория, а в своей ФС оставить, выполните эту команду:
git rm --cached <путь к файлу>
Git branch
Вы сделали опечатку в имени ветки или хотите изменить ее имя? Следующая команда вам в помощь:
git branch -m <старое имя ветки> <новое имя ветки>
Если нужно изменить имя текущей ветки:
git branch -m <новое имя ветки>
Для изменения имени запушиной ветки потребуется выполнить несколько дополнительных шагов:
git push <имя удаленной ветки> --delete <старое имя ветки> git push <имя удаленной ветки> <новое имя ветки>
Если имя локальной ветки не совпадает с именем ветки в репозитории, используйте команду:
git push <имя удаленной ветки> <локальное имя ветки>:<имя удаленной ветки>
Git log
Чтобы увидеть историю Git коммит, применяйте команду git log. Вам будет показано много информации, но среди этого вам нужен только commit id и сообщение. Для изменения вывода выполните такую команду:
git log --oneline
Она покажет вывод, как на картинке ниже.
Первые семь символов – это сокращенный commit id, а после него идет сообщение. Commit id представлен в сокращенном виде, т. к. "полная версия" состоит из сорока шестнадцатеричных символов, указывающих на 160-разрядный SHA1 хэш.
Head -> master – означает, что мы в ветке master.
Если вы хотите увидеть сообщение конкретного автора, можно выполнить это:
git log --author="John Doe"
Git stash
Допустим, вы решили проверить код ветки перед внесением изменений. Для этого есть команда stash, которая будет держать рабочее дерево в "чистоте":
git stash
Для отмены изменений делайте так:
git stash pop
А если передумали, делайте откат:
git stash drop
Git checkout
Чтобы переключиться на другую ветку, выполните команду:
git checkout <имя ветки>
Не забывайте сохранять изменения или делать Git коммит в текущей ветке. Если этого не сделать, изменения могут отразиться на других ветках, а вам это не нужно.
Например, есть ветка development, и вы хотите сделать ее копию, чтобы переключаться в нее напрямую. Это можно сделать так:
(development)$ git checkout -b <новое имя ветки>
Git commit
Вы закоммитили изменения, позже поняли, что допустили ошибку, или просто необходимо сделать описание более понятным. Тогда эта команда – то, что нужно:
git commit --amend -m "сообщение"
Если вы добавили новые файлы или исправили ошибку, но не хотите добавлять еще одно commit-сообщение, используйте команду с флагом --no-edit:
git commit --amend --no-edit
Вы запушили свой код в удаленный репозиторий, а затем поняли, что нужно изменить commit-сообщение. Для этого после внесения изменений сделайте принудительный push. Используя имя удаленного репозитория в качестве источника, выполните:
git push origin <имя ветки> -f
Git reset
Если вам нужно отменить последний коммит, используйте git reset. Существуют три полезных флага сброса:
- soft
- mixed
- hard
Предположим, вы хотите отменить изменения, до момента добавления файла two.txt, имеющего commit id 96b037c.
Теперь давайте выполним команду git reset с флагом --soft:
git reset --soft 96b037c
git reset --soft "потеряет" все коммиты после этого идентификатора (например, 96b037c), но файлы не будут удалены, они будут находиться в промежуточной области.
Потерянные коммиты не имеют прямой ссылки для доступа к ним. Такие коммиты обычно можно найти и восстановить с помощью git reflog. Git навсегда удалит "потеряшки", когда запустится сборщик мусора (запуск производится каждые 30 дней).
При запуске git status вы увидите:
Если вы запустите git log --oneline, то увидите, что предыдущие коммиты были удалены:
Если выполнить команду reset с флагом --mixed, коммиты станут "потерянными", файлы не будут находиться в промежуточной области, но их можно будет найти в ФС. Если вы вообще не укажете флаг в команде reset, флаг --mixed будет использоваться по умолчанию.
При запуске git status увидим следующее:
Если необходимо окончательно удалить файлы, запустите команду reset с флагом --hard.
Рекомендуется сначала выполнить reset --soft, чтобы проверить затрагиваемые файлы. Если все хорошо, запускайте reset --hard.
Никогда не используйте git reset <commit-id> после того, как все запушено в общедоступный репозиторий. Удаление коммита, с которым продолжают работать другие члены команды, создает серьезные проблемы.
Git revert
Еще один способ отменить Git коммит:
git revert <commit-id> --no-commit
Проверить затронутые файлы с помощью git status. Затем git commit -m "commit-message".
Revert отменяет не коммит, а изменения возвращенного commit-id.
Например, необходимо отменить последний коммит. После revert-а статус будет выглядеть так:
Перед последним коммитом файл six.txt не был добавлен, поэтому он удален, а five.txt возвращается в предыдущее состояние. Теперь история будет выглядеть так:
Если вы хотите отменить несколько коммитов в пределах диапазона, выполните следующую команду:
git revert <старый commit-id>..<недавний commit-id> --no-commit
Если нужно отменить несколько коммитов, вне диапазона, следует указывать каждый commit-id:
git revert <commit-id-1> <commit-id-2> --no-commit
Git cherry-pick
И последняя команда из рубрики Git для начинающих – cherry-pick. Чтобы сделать коммит (например, исправление ошибки) в ветке "А", работая в ветке "Б", используйте команду cherry-pick.
Сначала необходимо переключиться на ветку с коммитом, скопировать commit-id, а потом перейти обратно в свою ветку. Затем выполните следующую команду, чтобы получить коммит в рабочей ветке:
git cherry-pick <commit-id>
Git fetch
Команда для случаев, когда необходимо собрать все существующие коммиты из нужной ветки (удаленный репозиторий) и сохранить их в local repository. После выполнения git fetch
вы получаете ссылки на ветки удаленного проекта. Суть и главное преимущество команды в том, что с ее помощью вы не сливаете все коммиты в основную ветку.
Git merge
А вот git merge
как раз для этого и нужен.
Git pull
Данная команда – симбиоз git fetch
и git merge
. Шорткод хорош, но только в том случае, если вам действительно нужно слить коммиты сразу после их сбора.
Git push
Если git pull
предназначен для мержа изменений в локальный репозиторий из удаленного, то git push
действует с точностью до наоборот: локальные изменения пушатся в удаленный репозиторий.
Также можно использовать:
git push origin master
Что означает коммит из локальной ветки master
на удаленный репозиторий origin
.
А какие еще команды вы бы посоветовали изучить новичкам?
Комментарии