Изучая программную инженерию в школе Flatiron под руководством Адама Ла Росы, я научился использовать ветки Git и GitHub и полюбил их. Это то, как Git был разработан для использования, так почему бы не научиться эффективно использовать систему ветвей сразу же. Освоение ветвей сделает вас более эффективным программистом, который сможет легче интегрировать успешный код и быстро исправлять ошибки.

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

Следующая часть головоломки, ветки, — это способ Git/GitHub управлять этими моментальными снимками, ну… в разных ветках. Они позволяют нам экспериментировать, ломать, исправлять и иным образом изменять наши проекты, оставляя наш уже работающий код красивым и безопасным. Если вы вообще работали с Git, вы уже работали с веткой! При создании репозитория также создается ветвь по умолчанию, известная как main. Здесь изначально живет наш проект, и пока мы не начнем разветвляться, наши коммиты будут отслеживаться в этой ветке, и все будущие ветки, скорее всего, будут объединены обратно в main. main следует рассматривать как работающий продукт, и мы должны содержать его в хорошем состоянии, чистым и в рабочем состоянии.

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

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

После нажатия Enter мы видим, что находимся на главной ветке, поскольку main выделено зеленым текстом и звездочкой.

Мы также видим, что других ветвей для работы нет. Итак, давайте создадим новую ветку, чтобы мы могли добавить файл JavaScript, написать код и оставить основную ветку нетронутой. Для этого нам нужно ввести git checkout -b branchName, заменить branchName на желаемое имя вашей ветки, в моем случае я назову ее adding-javascript, так как я хочу использовать эту ветку для добавления файла JavaScript и журнала консоли.

Повторный ввод git branch покажет нам, что у нас есть две доступные ветки, и что мы сейчас находимся на ветке adding-javascript.

Переключение туда и обратно между ветвями просто. Просто введите git checkout branchName, и вы перейдете к нужной ветке. Ниже приведен пример того, как легко переключать ветки:

Теперь давайте продемонстрируем, как каждая ветка отдельно отслеживает изменения. Убедитесь, что вы находитесь во вновь созданной ветке и используйте терминал для создания файла. Я собираюсь создать файл JavaScript, назвать его «index» и добавить в него простой журнал консоли.

Хорошо! Мы внесли некоторые изменения в нашу новую ветку. Теперь пришло время подготовить и зафиксировать их. Вставьте git add и git commit в терминал, чтобы зафиксировать наши изменения в ветке.

Коммит завершен. Теперь мы успешно создали ветку, внесли некоторые изменения в нашу новую ветку и зафиксировали эти изменения. Чтобы продемонстрировать мощь веток git, давайте добавим ls в терминал, переключимся на main и вставим еще ls, заметили что-нибудь?

Наше главное отделение понятия не имеет, чем мы занимались. У нас по-прежнему есть доступ ко всем файлам в основной ветке, и они именно такие, какими мы их оставили. Мы можем возиться с нашим файлом JavaScript в ветке adding-javascript, удалять его, добавлять другие файлы, возиться с другими файлами, которые также находятся в основной ветке, и быть уверенными, что мы ничего не сломаем. main. Это сила филиалов. У нас осталась всего пара шагов, так что давайте закончим с этой веткой.

Ветви должны быть сделаны, чтобы служить цели (или двум). В большинстве случаев эта цель будет более грандиозной, чем простое добавление файла JavaScript, что-то вроде изменения нашего кода в POST-запросе, внесения некоторых изменений в наш CSS и т. д., но ради этого урока мы делаем это простым. Как только эта цель будет достигнута, мы можем объединить основную ветку с нашей новой веткой, а затем удалить ее. Наша ветка была создана для добавления javascript, эта цель была достигнута, поэтому давайте объединим ее и выбросим! Ветка, которая получает слияние, должна быть той веткой, в которой вы работаете, поэтому, убедившись, что вы вернулись в основную, выполните команду git merge branchName.

Как видите, слияние добавило файл index.js из нашей ветки adding-javascript в основную ветку! Никакие другие файлы в main не затрагивались, поэтому мы можем быть уверены, что изменения в нашей ветке прошли без проблем. При работе с большим количеством кода у вас могут возникнуть конфликты, возникающие при слиянии веток, они могут быть пугающими, но пока вы уделяете каждому конфликту все свое внимание, вы должны быть в состоянии разрешить их, не нарушая код, но это тема для другого блога.

Мы объединили наш новый файл и ветку с main, поэтому нам осталось сделать только одно. Удалите бесполезную ветку! Это простая команда, которую можно выполнить с помощью git branch -d branchName. Давайте запустим команду, а затем добавим git branch, чтобы убедиться, что наша ветвь исчезла.

И вот оно! Теперь у вас есть инструменты для экспериментов с ветками git/GitHub, позволяющие создавать, редактировать и удалять свой код, зная, что ваши файлы останутся в безопасности на main.

Больше контента на blog.devgenius.io.