В этой статье мы расскажем, как работать с ветками в Git с помощью команды git branch. О том, что такое Git, вы можете узнать в статье: Работа с Git на хостинге.
Ветви в Git
Ветка в Git — это набор коммитов, расположенных в хронологическом порядке. У каждой ветки есть свое название. Основная ветка чаще всего называется master, она появляется при инициализации репозитория и считается главной веткой проекта. Другим веткам вы даете имена самостоятельно. Дополнительные ветки используются для создания нового функционала и исправления ошибок. То есть все изменения в проекте создаются в отдельной ветке, а затем эта ветка сливается с основной.
Что такое бранч в Git
Команда git branch
нужна для работы с ветвлением в Git. При помощи нее можно создавать новые ветки, а также просматривать, переименовывать и удалять существующие.
Как создать новую ветку в Git
Чтобы создать новую ветку, введите команду:
git branch new-branch
где new-branch — имя новой ветки.
При использовании этой команды вы создаете новую ветку, но не переключаетесь на нее.
Как переключиться на ветку в Git
Чтобы переключиться на новую ветку, используйте команду:
git checkout your-branch
где your-branch — имя ветки, к которой хотите перейти.
Как создать новую ветку и переключиться на нее
Как правило, при создании новой ветки пользователю сразу нужно перейти в нее. В таком случае можно использовать команду:
git checkout branch new-branch
где new-branch — имя новой ветки.
Или же можно ввести команду git checkout с ключом —b:
git checkout -b new-branch
где new-branch — имя новой ветки.
Слияние веток
Ветвление позволяет отделить готовый код проекта от функционала, который находится в стадии разработки и тестирования. Когда разработчик завершил задачу, ветку с новым кодом необходимо слить с основной. Сделать это можно с помощью команды git merge. Чтобы слить код в основную ветку:
-
1
Перейдите к ветке master:
git checkout master
-
2
Обновите локальную ветку с сервера:
git pull origin master
-
3
Выполните команду:
git merge merged-branch
где merged-branch — имя сливаемой ветки. Сливаемой веткой считается та, из которой берутся изменения.
Команда git merge берет все данные из сливаемой ветки и добавляет их в основную. После процедуры слияния сливаемая ветка не изменяется, все данные в ней остаются в прежнем виде.
В процессе слияния ветвей могут возникнуть конфликты. Чаще всего конфликты появляются, когда два человека вносят изменения в одну и ту же строку файла или один пользователь удаляет файл, который в это время редактирует другой пользователь. В таких случаях Git прерывает процесс выполнения команды, чтобы вы могли разрешить конфликт.
Для работы с конфликтами используются опции:
- --continue — позволяет продолжить слияние после разрешения конфликта,
- --abort — прерывает процесс слияния и возвращает ветку к начальному состоянию.
Чтобы решить конфликт слияния при изменении строк, необходимо отредактировать файл, в котором возник конфликт. В нем нужно удалить маркеры конфликта и оставить те изменения, которые должны быть в итоговой версии. Чтобы решить конфликт с удалением файлов, нужно решить, вернуть ли удаленный файл в репозиторий или окончательно удалить его.
Как управлять ветками с помощью git branch
Чтобы вывести список существующих веток, используйте команду:
git branch
Ваша текущая ветка будет отмечена символом * и выделена зеленым цветом.
Чтобы увидеть последний сохраненный коммит в каждой ветке, введите команду:
git branch -v
Чтобы вывести ветки, которые были слиты с текущей, используйте команду:
git branch --merged
Чтобы вывести ветки, которые еще не были слиты с текущей, используйте команду:
git branch --no-merged
Как закоммитить изменения в новую ветку
После внесения изменений в новой ветке необходимо сделать коммит, чтобы сохранить код. Для этого используйте команды:
git add .
git commit -m "<комментарий>"
Как отправить изменения в удаленный репозиторий
Чтобы отправить локальную ветку в удаленный репозиторий, используйте команду:
git push origin your-branch
где your-branch — имя ветки, которую хотите отправить.
Как переименовать ветку в Git
Чтобы переименовать ветку, на которой вы находитесь, используйте команду:
git branch -m new-name
где new-name — новое имя ветки.
Если вам необходимо переименовать другую ветку, воспользуйтесь командой:
git branch -m old-name new-name
где:
- old-name — старое имя ветки,
- new-name — новое имя ветки.
Если отправить переименованную ветку в удаленный репозиторий, то появится ветка с новым именем, при этом ветка со старым именем не пропадет. Поэтому ветку со старым именем нужно удалить из удаленного репозитория:
git push origin :old-name
где old-name — старое имя ветки.
Затем необходимо отправить новую ветку в удаленный репозиторий и настроить локальную ветку для отслеживания удаленной ветки:
git push --set-upstream origin new-name
где new-name — новое имя ветки.
Как удалить ветку в Git
Чтобы удалить локальную ветку в Git, используйте команду:
git branch -d your-branch
где your-branch — имя ветки, которую хотите удалить.
Удалить ветку, в которой вы находитесь в данный момент, нельзя. Поэтому перед удалением вам нужно перейти на другую ветку, например, master. Сделать это можно с помощью команды:
git checkout master
Если в ветке есть несохраненные изменения, то удалить ее с помощью ключа —d не получится. Так Git защищает пользователей от случайной потери данных. Если вы уверены, что вам не нужны внесенные изменения и данные можно удалить, используйте команду:
git branch -D your-branch
где your-branch — имя ветки, которую хотите удалить.
Эта команда принудительно удалит заданную ветку.
Как просмотреть состояния файлов ветки
Если перейти на другую ветку, предварительно не сделав коммит, то все незакоммиченные изменения перенесутся на ветку, на которую вы перешли. Поэтому перед переходом необходимо проверять, закоммитили ли вы изменения в текущей ветке. Сделать это можно с помощью команды:
git status
Эта команда показывает текущее состояние вашего репозитория. Если все изменения закоммичены, то вы увидите следующее:
On branch master
nothing to commit, working tree clean
Если вы создавали, редактировали или удаляли файлы и не закоммитили изменения, то вывод будет примерно таким:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
file1.txt
В этом случае все необходимые изменения нужно закоммитить.
Как посмотреть историю коммитов
Для просмотра истории коммитов используйте команду:
git log
Чтобы получить более конкретный вывод, можно использовать опции:
--author="your-name"
— показывает коммиты, созданные заданным пользователем;--after="date"
— показывает коммиты, созданные после указанной даты;--before="date"
— показывает коммиты, созданные до указанной даты;-n
— показывает последние n коммитов;--oneline
— показывает укороченный вывод коммитов (в одну строку). Выводит только хэш и заголовок;-p
— выводит изменения, содержащиеся в коммите.
Это лишь часть опций. Полный список можно посмотреть с помощью команды:
git log --help
Как посмотреть разницу между коммитами
Чтобы просмотреть изменения в файлах по сравнению с последним коммитом, воспользуйтесь командой:
git diff
Чтобы сравнить изменения в двух разных коммитах, используйте команду:
git diff <commit1_hash> <commit2_hash>
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊