🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 15.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks
Git — это система контроля версий, инструмент, который отслеживает изменения в вашем коде и позволяет работать над проектом нескольким людям одновременно.
В этой статье перечислены основные команды Git, которые должен знать каждый QA-специалист для управления репозиториями GitHub. Как новичкам, так и опытным пользователям будет полезно еще раз повторить базовые повседневные команды.
Содержание:
- Установка имени пользователя в Git
- Настройка репозитория
- Добавление файлов
- Проверка репозитория
- Коммит
- Просмотр истории коммитов
- Просмотр изменений
- Переименование файлов
- Ветвление
- Отмена изменений в файле
- Работа с удаленными репозиториями
- Сохранение изменений в буфере обмена
- Работа с тегами
- Получение изменений из удаленного репозитория
- Выборочный перенос коммитов
- Отмена последних коммитов
- Переключение между коммитами или ветками
- Обнаружение ошибок
Установка имени пользователя в 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».