Задать вопрос
@magistr4815

Подтянуть изменения из ветки — как пройти уровень за 4 команды?

Добрый день, решил разобраться с гитом, нашёл интересный сервис (learngitbranching.js.org - Сборная солянка - 2 уровень "Жонглируем коммитами"), который рассказывает все о нем. Пытаюсь пройти уровень за 4 команды, именно за столько и нужно. Но получается только за 5.

Задание:
- Переставить коммит так, чтобы нужный находился наверху при помощи git rebase -i
- Внести изменения при помощи git commit --amend
- Переставить всё обратно при помощи git rebase -i
- И наконец, переместить master на изменённую часть дерева, чтобы закончить уровень.
Не понимаю как сделать эту задачу за одну команду!
Изначально имеем:
* - значит что мы находимся на этой ветке, т.е мы на ветке caption
5af83549b7540528502854.jpeg
Ход выполнения:
git rebase -i master - перемещаем все коммиты до развилки в мастер и меняем местами C3 и С2
5af8396d0d478150815019.jpeggit commit --amend - вносим какие либо изменения в коммит С2
5af839a8c5d3b410854767.jpeggit rebase -i master - меняем местами С2 и С3
5af83b5d11772605885457.jpeg
А вот далее нужно каким то образом, находясь в ветке caption подтянуть изменения в master за одну команду ... как это сделать не пойму.
Делал так:
git checkout master - переходим на мастер
git rebase caption - тут тоже небольшой вопросец: по идеи этой командой мы должны были ПЕРЕМЕСТИТЬ все коммиты из ветки в которой сейчас находимся (master) в (caption) поверх, но в мастере же меньше комитов, че мы туда будем копировать то ? С0 ? Вообщем не не совсем понятно как она так срабатывает, что мы в с (master) вставляем коммиты из (caption).
5af83a232a358382552138.jpegИтог: как сделать подтягивание за одну команду без git cherry-pick и как так срабатывает странно rebase ?
  • Вопрос задан
  • 5620 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Четвёртое действие (перемещение master на C3'', когда HEAD->caption)
git branch -f master HEAD
Я бы и не знал, если бы не одно из заданий, и использовал связку git checkout master && git reset --hard caption.

По поводу git rebase caption (когда находимся в master). Там срабатывает fast-forward, поэтому ветка автоматически продвигается вперёд. Чтобы удать этот эффект, пишем git rebaes --no-ff. Интерактивный режим по умолчанию отключает ff.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@a_reg
Я написал так:

git branch -f master HEAD C3''
Ответ написан
Комментировать
@7SoKKoS7
git rebase -i master - меняем местами С2 и С3
после git rebase caption master
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CodeX Нижний Новгород
от 30 000 до 80 000 ₽
CodeX Нижний Новгород
от 30 000 до 80 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽