20 базовых команд Git

🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 15.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks

Git — это система контроля версий, инструмент, который отслеживает изменения в вашем коде и позволяет работать над проектом нескольким людям одновременно.

В этой статье перечислены основные команды Git, которые должен знать каждый QA-специалист для управления репозиториями GitHub. Как новичкам, так и опытным пользователям будет полезно еще раз повторить базовые повседневные команды.

Содержание:

Установка имени пользователя в Git

Имя пользователя необходимо для привязки коммитов к вашему имени. Это не то же самое, что имя пользователя в учетной записи GitHub, используемое для входа в профиль.

Вы можете задать или изменить имя пользователя с помощью команды git config. Новое имя будет автоматически отображаться в последующих коммитах, отправляемых через командную строку.

git config --global user.name "Michael Scott"

Для установки адреса электронной почты, связанной с вашими коммитами, также используется команда git config. Адрес электронной почты будет автоматически отображаться во всех будущих коммитах, отправляемых на GitHub через командную строку.

git config --global user.email "michael.scott@dundermifflin.com"

Для того, чтобы не вводить вручную имя пользователя и пароль при работе с удалёнными репозиториями, учетные данные можно кэшировать. Git будет временно хранить эти данные в памяти.

git config --global credential.helper cache

Настройка репозитория

Для создания пустого репозитория или повторной инициализации существующего предназначена команда git init. Она создает подкаталог .git в текущем рабочем каталоге, содержащий все необходимые метаданные Git для нового репозитория.

git init

Добавление файлов

Команда git add добавляет новые или измененные файлы из вашего рабочего каталога в индекс – область подготовки файлов к последующему коммиту.
Добавление конкретного файла somefile.js:

git add somefile.js

Добавление всех файлов:

git add .

Проверка репозитория

Команда git status отображает состояние рабочего каталога и индекса. Она помогает понять, какие изменения были переданы в индекс, а какие нет, а также увидеть файлы, которые не отслеживаются Git.

git status

Коммит

Команда git commit используется для сохранения ваших изменений в локальном репозитории. Ее можно использовать с некоторыми опциями, например:

  • - m для добавления сообщения к вашему коммиту
  • - a для выполнение коммита со всеми изменениями в рабочем каталоге
  • --amend чтобы переписать последний коммит, добавив текущие изменения и новое сообщение
git commit -m "Commit message"
git commit -a -m "Commit message"
git commit --amend -m "New message"

Проcмотр истории коммитов

Для того, чтобы просмотреть историю коммитов используется команда git log. Её можно использовать и более продвинутым способом, просто добавив несколько опций.

git log

Опция oneline выводит коммиты в одну строку:

git log --oneline

Команда git shortlog группирует все коммиты по автору и отображает первые строки комментариев к ним:

git shortlog

Опция --graph рисует ASCII-график, представляющий структуру веток в истории коммитов. Она обычно используется вместе с опциями--oneline и --decorate, чтобы было проще понять, какой коммит принадлежит к той или иной ветке:

git log --graph --oneline --decorate

Для ограничения количества отображаемых коммитов применяется опция -:

git log -5

Также можно фильтровать историю коммитов, например, по дате, по автору, по файлу, по сообщению:

git log --after="yesterday" --before="2022-10-10"
git log --author="Michael"
git log -- somefile.js
git log -S "fix"

Просмотр изменений

Команда git diff показывает изменения между коммитами, коммитом и рабочим каталогом и т.д.

git diff

Чтобы отобразить текущие изменения этого файла, просто укажите имя файла:

git diff somefile.js

Для отображения изменений между ветками master и develop:

git diff master..develop

Переименование файлов

Вы можете переименовать файл или папку с помощью команды git mv. Необходимо указать источник (реальную папку или файл) и путь (имя нового файла/папки или уже существующую папку).

git mv directory1/somefile.js directory

Ветвление

Ветка — это простой перемещаемый указатель на определенный коммит в истории изменений. Если необходимо добавить новый функционал или исправить баг, вы просто создаете новую ветку, в которой будете размещать эти изменения. 

Команда git branch позволяет создавать, переименовывать, удалять ветки, а также выводить их список.
Для создания новой ветки просто указываем её название после команды:

git branch branch_name

Также вы можете передать некоторые опции команде git branch:

  • -m <branch> для переименования текущей ветки
  • -d <branch> для удаления ветки локально
  • -a для отображения списка всех веток

Отмена изменений в файле

Команда git restore позволяет отменить индексацию файла или даже незакоммиченные локальные изменения. Она может быть использована для отмены действия git add и локальных изменений в файле, вернув его к состоянию последнего коммита.

git restore somefile.js
git restore --staged index.js

Работа с удаленными репозиториями

С помощью команды git remote можно управлять удаленными репозиториями.
Для просмотра всех подключённых удаленных репозиториев с их адресами укажите опцию -v:

git remote -v

Для изменения адреса удаленного репозитория:

git remote set-url <name> <new_url>

Чтобы переименовать удаленный репозиторий, можно воспользоваться следующей командой:

git remote rename <old_name> <new_name>

Если вы хотите удалить удаленный репозиторий можете использовать команду git remote remove:

git remote remove <remote_name>

Сохранение изменений в буфере обмена

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

git stash

К команде можно добавить некоторые опции:

  • -u для хранения неотслеживаемых файлов
  • -a для хранения изменений, внесённых в игнорируемые файлы

Команда stash сохраняет ваши изменения в некий список, доступ к которому можно получить следующим образом:

git stash list

Также вы можете добавить сообщение к отложенным изменениям с помощью команды git stash save "message":

git stash save "some comment"

Для вывода информации по последнему сделанному изменению воспользуйтесь следующей командой:

git stash show

Чтобы применить сохраненные изменения к рабочей копии, не удаляя их из хранилища, воспользуйтесь командой git stash apply (будет применено последние сохраненное изменение):

git stash apply

Следующая команда очищает хранилище:

git stash clear

Работа с тегами

В Git определённые моменты в истории можно помечать как важные. Такие пометки называются тегами. Отмечайте конкретные точки в истории репозитория, например момент релиза, с помощью команды git tag.

git tag v1.1
  • Для доступа к списку тегов используйте git tag -l
  • Чтобы удалить определенный тег достаточно выполнить команду git tag -d v1.0.
  • Для вывода списка тегов в удаленном репозитории используйте git ls-remote --tags
  • Для того, чтобы переназначить существующий тег на другой коммит используйте опцию -f: git tag -f v1 v1.1. В данном случае тег v1 будет указывать на тот же коммит, что и v1.1

Получение изменений из удаленного репозитория

Для загрузки содержимого из удаленного репозитория предназначены две команды: git pull и git fetch. Однако, между ними есть разница.

Команда git fetch загружает удаленное содержимое, но не обновляет вашу рабочую ветку, оставляя ваши наработки нетронутыми. А вот команда git pull автоматически получает изменения из удаленной ветки и выполняет их слияние с текущей.

  • Для удаления ссылок на ветки, которые больше не существуют в удаленном репозитории используйте команду git fetch с опцией --prune.
  • Если вам необходимо применить коммиты из удаленной ветки поверх локальной добавьте к команде git pull опцию --rebase.

Выборочный перенос коммитов

Бывают ситуации, когда нужно забрать парочку коммитов из другой ветки, а не сливать ветку полностью со всеми внесёнными в неё правками. В этом случае на помощь приходит команда git cherry-pick. Она берёт изменения, вносимые одним коммитом, и пытается повторно применить их в виде нового коммита в текущей ветке.

Выполняется команда следующим образом:

git cherry-pick <commitSHA>

*commitSHA – это хеш коммита, т.е. его уникальный идентификатор

Отмена последних коммитов

В Git существует два способа отмены последних изменений – это команды git revert и git reset.

Команда git revert создает новый коммит,  который откатывает все изменения, сделанные в другом.

Если вам необходимо отменить изменения, добавленные в индекс, используйте команду git reset.

С помощью команды git reset можно изменить состояние индекса и/или рабочего каталога, если ее использовать со следующими опциями:

  • --soft, переместит ветку на указанный коммит, а индекс и рабочий каталог останутся без изменений
  • --mixed (по умолчанию), индекс обновится в соответствии с указанным коммитом, а рабочий каталог же останется в прежнем состоянии.
  • --hard, индекс и рабочий каталог будут приведены к состоянию указанного коммита, и все незакоммиченные изменения будут удалены.

Переключение между коммитами или ветками

С помощью команды git checkout вы можете переключаться между коммитами и ветками, просто указывая имя ветки или хеш коммита.

git checkout <commitSHA>

Также вы можете создать новую ветку и сразу переключиться на нее:

git checkout -b new_branch

Обнаружение ошибок

Команда git bisect позволяет выполнить поиск по истории коммитов для того, чтобы помочь вам как можно быстрее определить коммит, в котором впервые появился баг.

Git будет искать этот коммит между двумя точками: первая – текущий коммит, где баг уже есть, и вторая – коммит, где баг еще отсутствует.

Вот как это выглядит на практике:

git bisect start
git bisect bad
git bisect good v1.0 

*v1.0 – это коммит, который вы отметили как последний хороший, без бага

Если вы, например, видите, что какой-то метод в вашем коде работает неправильно, вы можете с помощью команды git blame просмотреть аннотацию к файлу, и таким образом увидеть, когда и кем была изменена каждая строка метода последний раз.

git blame somefile.js 

В данном случае для каждой строки файла somefile.js будут отображены: хеш коммита, автор, дата изменения и содержимое строки.

Команду можно использовать с некоторыми опциями:

  • -e, чтобы кроме имени автора отобразить адрес его электронной почты
  • -L, чтобы ограничить вывод указанным диапазоном строк

Перевод статьи «20 Git basic commands every QA Engineer should know».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *