Как работают ветки Git? – CloudSavvy ИТ

Ветки являются основной функцией отслеживания версий Git и постоянно используются командами, работающими над одной и той же кодовой базой программного обеспечения. Мы углубимся в то, как они работают внутри, и как вы можете использовать их для улучшения вашего рабочего процесса Git.

Что такое филиалы на самом деле?

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

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

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

Однако под капотом ветки работают немного иначе, чем вы могли бы ожидать на первый взгляд. В Git ветки — это просто метки или указатели на конкретный коммит. Вот и все, ветка master просто указывает на последний коммит, сделанный на master; когда вы делаете новую фиксацию, метка обновляется, чтобы указать на новую фиксацию.

Хотя полезно думать о коммитах как о движении вперед во времени; на самом деле Git фиксирует точки друг относительно друга. Каждый коммит имеет ссылку на последний коммит, и эта цепочка используется для построения состояния репозитория.

Однако, если вы создадите новую ветку, все будет работать немного по-другому. Любая ветка, которую вы извлекли (с помощью git checkout ), будет использоваться в качестве метки для нового коммита.

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

мастер проверки git

Затем создайте новую ветку и переключитесь на нее:

Функция ветки git Функция проверки git

На данный момент в вашем репозитории ничего не изменилось. Метки функциональной и главной ветки указывают на один и тот же коммит.

Однако все, что вы зафиксируете с этого момента, будет добавлено в ветку функций. В частности, будет создана новая фиксация, настроенная так, чтобы она указывала на текущую фиксацию, а метка «функция» будет обновлена, чтобы указывать на эту новую фиксацию.

Вы даже можете проверить master и сделать больше коммитов в основной ветке. Это не повлияет на ветвь функции, потому что все, что знает метка, это то, что она указывает на эту конкретную фиксацию. Он не будет обновлен основной меткой.

Слияние и перебазирование

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

Самый простой случай, когда у вас есть простая ветка, которую просто нужно объединить обратно. Вы можете проверить ветку master, а затем запустить git merge feature, чтобы «переиграть» все коммиты, сделанные в ветке feature, на master.

Это включает их в основную временную шкалу и создает новую «коммит слияния» с изменениями.

Однако это не всегда так просто, и во многих случаях вам придется объединить конфликты которые необходимо решить. Это может включать ветки, изменяющие одни и те же строки в файлах, перемещение или удаление файлов или другие виды ошибок, возникающие при изменении программного обеспечения с момента создания функциональной ветки.

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

Эта стратегия распространена для долгоживущих веток и обычно считается лучшей практикой для Git.

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

Однако история Git «неизменяема», и из-за этого перебазирование копий коммитов вместо фактического их перемещения. Это может привести к множеству проблем в общих ветках, если они не будут должным образом скоординированы с вашей командой — если вы перебазируете, а ваш коллега сделает новую фиксацию в «старой», теперь удаленной функциональной ветке, она останется незавершенной. Им придется спрятать коммит и поместить его в новую ветку, чтобы согласовать изменения.

Как вы используете ветки?

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

git checkout мастер git checkout aa3e570923b8ee61414cec17d9033faab4f084a6

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

Функция ветки git Функция проверки git

Это можно сделать одной командой с флагом -b для проверки:

функция git checkout -b

На этом этапе любые коммиты, сделанные в вашем репо, будут сделаны в новой ветке.

Если вам нужно снова поменять местами ветки, просто запустите git checkout master, чтобы вернуться в нормальное состояние.

Если у вас есть локальные изменения, которые вам нужно переместить, вы можете поместить их в git stash. Изменения будут сохранены и могут быть повторно применены после замены веток.

git stash git checkout функция git stash применить

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

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

Ваш адрес email не будет опубликован.