Ветки в репозиториях

Основные моменты работы с git мы изучили. Нам осталось разобраться с ветками. Давайте продолжим. Введем:

git branch

Как вы видите у нас есть только одна ветка main в которую и будут попадать все наши текущие коммиты. Давайте создадим еще одну ветку в которой мы будем "править ошибки", назовем ее new:

git branch new

Теперь у нас две ветки main и new. Давайте переключимся в ветку new, сделаем там пару коммитов и зальем все на удаленный репозиторий.

Переключим ветку:

git checkout new

Сделаем два изменения времени в файле README.md и закоммитим их последовательными коммитами:

nano README.md

git add .
git commit -m "first commit in new branch"

nano README.md

git add .
git commit -m "second commit in new branch"

И зальем на удаленный репозиторий:

git push --set-upstream origin new

Обратите внимание, что git сам подскажет правильную команду:

Зайдем на GitHub и посмотрим как там всё выглядит:

В списке веток появилась ветка new, и в ней все сделанные коммиты на текущий момент.

Давайте переключимся обратно на ветку main и сделаем коммит в ней:

git checkout main
nano README.md

git add .
git commit -m "commit from main branch"
git push

Посмотрим как ветка main выглядит на GitHub:

Далее мы можем вести разработку и создавать коммиты неограниченно долгое время и у нас будут две ветки развивающиеся параллельно.

И последний прием который часто используется, это слияние веток обратно, к примеру, после того как все ошибки исправлены и фиксы надо влить обратно в ветку разработки. Давайте вольем ветку new в ветку main.

git checkout main
git merge new

Так как в обоих ветках находится файл README.md, и он различается в каждой из веток, то git не знает какой из них брать, то вы получите какое-то сообщение о невозможности слить ветки. Кроме того во всех файлах где git увидит конфликты будут выделены конфликтные области:

Существуют различные способы решения данного конфликта, и пытливые учащиеся могут самостоятельно поискать эти способы, но мы поступим более топорно. Отредактируем файл README.md в nano, оставив ту версию, которая нам больше нравится:

Оставим, к примеру, 14-00:

Теперь создадим коммит в который включим наш отредактированный файл:

git add .
git commit -m "README.md merge confilct solved"

И все что нам остается сделать это запушить все изменения в удаленный репозиторий:

git push

Перейдем на сайт GitHub и посмотрим как наш merge выглядит там:

Ну вот, все коммиты сохранены, ветки слиты. Текущее значение времени в README.md 14-00. Все как мы хотели.

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

На этом мы закончим наш пример работы с git. Переходите к изучению базового курса по ROS.

results matching ""

    No results matching ""