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

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

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

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

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 reset soft «потеряет» все коммиты после этого идентификатора (например, 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, а потом перейти обратно в свою ветку. Затем выполните следующую команду, чтобы получить коммит в рабочей ветке:

Оригинал

proglib.io

Добавить комментарий

Ваш e-mail не будет опубликован.

двадцать − 19 =