Git для начинающих: основы рабочего процесса и базовые команды

0
6156
Добавить в избранное

Статья «Git для начинающих» направлена на усовершенствование навыка его использования и исправление распространенных ошибок.

Рассмотрим различные ситуации из жизни разработчика (и не только). К каждой будет прилагаться правильное оптимальное решение.

Git для начинающих: основы рабочего процесса и базовые команды

Git для начинающих: основные команды

Git init

Чтобы создать в текущей директории поддиректорию .git, где будут храниться все файлы репозитория, выполните git init. Если поддиректория уже существует, при повторной аналогичной команде будет выведено сообщение Reinitialized existing Git repository in.

Git add

Вам необходимо добавить в проект файлы с определенным расширением. Можно добавить все файлы по одному, но лучше использовать *.< имя_расширения>, чтобы включить все файлы с этим расширением:

Если вы хотите добавить файлы с определенным расширением и следом указать имя каталога, то можно выполнить следующую команду. Она добавит все .py файлы из подкаталогов models/directory:

Git clean

Допустим, вы создали несколько новых файлов или папок в ветке Git, а через время оказалось, что эти файлы больше не нужны. В этом случае нужно очистить свое рабочее дерево от лишних файлов (которые были добавлены с помощью git add) следующей командой:

Чтобы увидеть, какие untracked-файлы будут удалены, используйте команду:

Git rm

Следующая команда в подборке «Git для начинающих» поможет удалить отслеживаемые файлы:

Если удаляемый файл находится в staging-области, нужно применить специальный флаг:

На случай если вы хотите удалить файлы из репозитория, а в своей ФС оставить, выполните эту команду:

Git branch

Вы сделали опечатку в имени ветки или хотите изменить ее имя? Следующая команда вам в помощь:

Если нужно изменить имя текущей ветки:

Для изменения имени запушиной ветки потребуется выполнить несколько дополнительных шагов:

Если имя локальной ветки не совпадает с именем ветки в репозитории, используйте команду:

Git log

Чтобы увидеть историю Git коммит, применяйте команду git log. Вам будет показано много информации, но среди этого вам нужен только commit id и сообщение. Для изменения вывода выполните такую команду:

Она покажет вывод, как на картинке ниже.

Git для начинающих: основы рабочего процесса и базовые команды

Первые семь символов – это сокращенный commit id, а после него идет сообщение. Commit id представлен в сокращенном виде, т. к. «полная версия» состоит из сорока шестнадцатеричных символов, указывающих на 160-разрядный SHA1 хэш.
Head -> master – означает, что мы в ветке master.

Если вы хотите увидеть сообщение конкретного автора, можно выполнить это:

Git stash

Допустим, вы решили проверить код ветки перед внесением изменений. Для этого есть команда stash, которая будет держать рабочее дерево в «чистоте»:

Для отмены изменений делайте так:

А если передумали, делайте откат:

Git checkout

Чтобы переключиться на другую ветку, выполните команду:

Не забывайте сохранять изменения или делать Git коммит в текущей ветке. Если этого не сделать, изменения могут отразиться на других ветках, а вам это не нужно.

Например, есть ветка development, и вы хотите сделать ее копию, чтобы переключаться в нее напрямую. Это можно сделать так:

Git commit

Вы закоммитили изменения, позже поняли, что допустили ошибку, или просто необходимо сделать описание более понятным. Тогда эта команда – то, что нужно:

Если вы добавили новые файлы или исправили ошибку, но не хотите добавлять еще одно commit-сообщение, используйте команду с флагом —no-edit:

Вы запушили свой код в удаленный репозиторий, а затем поняли, что нужно изменить commit-сообщение. Для этого после внесения изменений сделайте принудительный push. Используя имя удаленного репозитория в качестве источника, выполните:

Git reset

Если вам нужно отменить последний коммит, используйте git reset. Существуют три полезных флага сброса:

  • soft
  • mixed
  • hard

Git для начинающих: основы рабочего процесса и базовые команды

Предположим, вы хотите отменить изменения, до момента добавления файла two.txt, имеющего commit id 96b037c.

Теперь давайте выполним команду git reset с флагом soft:

git resetsoft «потеряет» все коммиты после этого идентификатора (например, 96b037c), но файлы не будут удалены, они будут находиться в промежуточной области.

Потерянные коммиты не имеют прямой ссылки для доступа к ним. Такие коммиты обычно можно найти и восстановить с помощью git reflog. Git навсегда удалит «потеряшки», когда запустится сборщик мусора (запуск производится каждые 30 дней).

При запуске git status вы увидите:

Git для начинающих: основы рабочего процесса и базовые команды

Если вы запустите git log —oneline, то увидите, что предыдущие коммиты были удалены:

Git для начинающих: основы рабочего процесса и базовые команды

Если выполнить команду reset с флагом —mixed, коммиты станут «потерянными», файлы не будут находиться в промежуточной области, но их можно будет найти в ФС. Если вы вообще не укажете флаг в команде reset, флаг —mixed будет использоваться по умолчанию.

При запуске git status увидим следующее:

Git для начинающих: основы рабочего процесса и базовые команды

Если необходимо окончательно удалить файлы, запустите команду reset с флагом —hard.

Рекомендуется сначала выполнить reset —soft, чтобы проверить затрагиваемые файлы. Если все хорошо, запускайте reset —hard.

Никогда не используйте git reset <commit-id> после того, как все запушено в общедоступный репозиторий. Удаление коммита, с которым продолжают работать другие члены команды, создает серьезные проблемы.

Git revert

Еще один способ отменить Git коммит:

Проверить затронутые файлы с помощью git status. Затем git commit -m «commit-message».

Revert отменяет не коммит, а изменения возвращенного commit-id.

Git для начинающих: основы рабочего процесса и базовые команды

Например, необходимо отменить последний коммит. После revert-а статус будет выглядеть так:

Git для начинающих: основы рабочего процесса и базовые команды

Перед последним коммитом файл six.txt не был добавлен, поэтому он удален, а five.txt возвращается в предыдущее состояние. Теперь история будет выглядеть так:

Git для начинающих: основы рабочего процесса и базовые команды

Если вы хотите отменить несколько коммитов в пределах диапазона, выполните следующую команду:

Если нужно отменить несколько коммитов, вне диапазона, следует указывать каждый commit-id:

Git cherry-pick

И последняя команда из рубрики Git для начинающих – cherry-pick. Чтобы сделать коммит (например, исправление ошибки) в ветке «А», работая в ветке «Б», используйте команду 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 действует с точностью до наоборот: локальные изменения пушатся в удаленный репозиторий.

Также можно использовать:

Что означает коммит из локальной ветки master на удаленный репозиторий origin.

А какие еще команды вы бы посоветовали изучить новичкам?

Оригинал

Другие материалы по теме:

Ищете с чего начать?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Оставьте комментарий