Прохождение Learn Git Branching

Аватарка пользователя Марина Александровна

Если у вас возникли сложности с прохождением интерактивного курса Learn Git Branching, подсмотрите решение в этой шпаргалке.

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

  1. Введение
  2. Едем дальше
  3. Перемещаем труды туда-сюда
  4. Сборная солянка
  5. Продвинутый уровень
  6. Push & Pull
  7. Origin и Git remotes

Введение

Прохождение Learn Git Branching начинается с азов.

1. Знакомство с Git commit

В этом уровне объясняется, что такое коммиты и как их следует делать. Для прохождения уровня достаточно ввести две команды для коммита, а именно:

			git commit -m "First commit"
git commit -m "Second commit"
		

Примечание Чтобы перейти в консоль LearnGitBranching, нажмите Tab.

Вообще, достаточно и просто двух команд git commit. Однако правилом хорошего тона является указание ветки (у нас это main) и именование коммитов в соответствии с тем, какие изменения были в них внесены.

2. Ветвление в Git

В этом уровне следует создать и переключиться на новую ветку bugFix:

			git branch bugFix
git checkout bugFix
		

3. Git merge

Теперь надо понять, как объединять изменения из двух разных веток. Для этого будем использовать команду git merge. Такой тип слияния создаёт коммит, который имеет сразу двух родителей. Для прохождения уровня введите следующие команды:

			git branch bugFix
git checkout bugFix
git commit -m "First commit"
git checkout main
git commit -m "Second commit"
git merge bugFix
		

4. Git rebase

Это второй способ объединения изменений в двух ветках. При ребейзе Git по сути копирует набор коммитов и переносит их в другое место. В учебнике сказано, что с rebase история коммитов будет чище, но в основном используется именно merge.

Давайте посмотрим на решение:

			git branch bugFix
git checkout bugFix
git commit -m "First commit"
git checkout main
git commit -m "Second commit"
git checkout bugFix
git rebase main
		

Едем дальше

Далее в прохождении Learn Git Branching вы столкнётесь с демонстрацией способов перемещения по дереву коммитов.

1. HEAD

Суть в том, чтобы отделить HEAD от ветки bugFix и присвоить его последнему коммиту в этой же ветке:

			git checkout C4
		

2. Относительные ссылки: ^

Перемещаемся на первого родителя ветки bugFix:

			git checkout bugFix^
		

3. Оператор «~» и branch forcing

Именно на этой задаче у многих возникают проблемы, потому что схема выглядит весьма запутанной. Но чтобы осуществить перемещение, достаточно ввести в консоль Learn Git Branching такие команды:

			git checkout C1
git branch -f main C6
git branch -f bugFix bugFix~3
		

4. Отмена изменений в Git

Здесь просто отменяем изменения локально и удалённо. Поскольку изначально мы находимся на локальной ветке (она отмечена звёздочкой), то и начинаем с неё:

			git reset HEAD~1
git checkout pushed
git revert HEAD
		

Перемещаем труды туда-сюда

Теперь речь пойдёт о перемещении изменений — возможности, позволяющей разработчику сказать «Хочу, чтобы эти изменения были вот тут, а вот эти — вон там» и получить точные, правильные результаты, не теряя при этом гибкости разработки.

1. Git cherry-pick

Здесь нужно перенести копии выбранных комитов в main, что делается всего одной строкой:

			git cherry-pick C3 C4 C7
		

2. Git interactive rebase

Это задача с использованием интерактивного окна для перемещения элементов. Для начала впишите код:

			git rebase -i HEAD~4
		

Затем выделите и переставьте элементы в интерактивном окне Learn Git Branching следующим образом:

Прохождение Learn Git Branching 1

Сборная солянка

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

1. Выберем один коммит

			git checkout main
git cherry-pick C4
		

2. Жонглируем коммитами

			git rebase -i main
git commit --amend -m "an updated commit message"
git rebase -i main
git branch -f main caption
		

3. Жонглируем коммитами №2

			git checkout main
git cherry-pick C2
git commit --amend -m "an updated commit message"
git cherry-pick caption
		

4. Теги

			git checkout C2
git tag v1 C2
git tag v0 C1
		

5. Git describe

			git describe main
git describe side
git describe bugFixgit
commit -m "Finish the task"
		

Продвинутый уровень

Вот мы и подошли к продвинутому уровню в прохождении Learn Git Branching.

1. Rebase на нескольких ветках

Перемещения здесь выглядят сложными, но на деле всё просто:

			git rebase main bugFix
git rebase bugFix side
git rebase side another
git rebase another main
		

2. Определение родителей

Решить можно в три, две и в одну команду. Сделаем в одну:

			git branch bugWork HEAD~^2~
		

3. Спутанные ветки

Задание считается сложным, но достаточно просто абстрагироваться и вспомнить полезную команду git cherry-pick:

			git checkout one
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2
		

Push & Pull

Теперь переходим к удалённым репозиториям. В этих ответах только код.

1. Введение в клонирование

			git clone
		

2. Удалённые ветки в Git

			git commit -m "First commit"
git checkout o/main
git commit -m "Second commit"
		

3. Git fetch

			git fetch
		

4. Git pull

			git pull
		

5. Коллективная работа

			git clone
git fakeTeamwork main 2
git commit -m "My commit"
git pull
		

6. Git push

			git commit -m "First commit"
git commit -m "Second commit"
git push
		

7. Когда наработки расходятся

			git clone
git fakeTeamwork
git commit -m "My commit"
git pull --rebase
git push
		

8. Remote rejected

			git reset --hard o/main
git checkout -b feature C2
git push origin feature
		

Origin и Git remotes

Это завершающий этап прохождения интерактива Learn Git Branching, в котором, как и в предыдущем, содержится восемь заданий. Здесь я приведу только их решения.

1. Слияние фича-бранчей (веток)

			git rebase side1 side2
git rebase side2 side3
git rebase side3 main
git pull --rebase
git push
		

2. Merge? Нет, нет, спасибо.

			git checkout main
git pull
git merge side1
git merge side2
git merge side3
git push
		

3. Удалённые-отслеживаемые ветки

			git checkout -b side o/main
git commit -m "My commit"
git pull --rebase
git push
		

4. Аргументы команды push

			git push origin main
git push origin foo
		

5. Подробности аргумента <пункт назначения>

			git push origin main~1:foo
git push origin foo:main
		

6. Аргументы git fetch

			git fetch origin main~1:foo
git fetch origin foo:main
git checkout foo
git merge main
		

7. Странный <источник>

			git push origin :foo
git fetch origin :bar
		

8. Аргументы для pull

			git pull origin bar:foo
git pull origin main:side
		

Надеюсь, моё прохождение Learn Git Branching окажется полезным. Старайтесь проходить уровни самостоятельно, чтобы закреплять полученные знания, но если где-то застрянете — обращайтесь за помощью к этой шпаргалке.

Держите больше шпаргалок по Git.

Задачи умеренной сложности
Git
Шпаргалки
16998