Ссылки: - Git курс (playlist): th-cam.com/video/W4hoc24K93E/w-d-xo.html - Git разное (playlist): th-cam.com/video/8HxTHPkdedA/w-d-xo.html - Учебник и курсы по JavaScript и смежных технологиям: learn.javascript.ru
2:59 так мы же сами из заревертили (хотя на самом деле было сказано ранее о реверте коммита из ветки master, а не feature - видимо автор ошибся), а потом пытаемя обойти). Называется "создать проблему, чтобы пытаться героически ее решить").
1:43 2:59 3:16 взять коммит из ветки master с помощью cherry-pick 3:36 отмена коммита отмены (git revert [коммит отмены]) - более надежный вариант, нежели cherry-pick слияния 4:33 проверка 4:49 завершение повторного слияния 4:53 итог 5:07
1:05 Коммит отмены 0cc5 отменяет изменения из ветки master. 2:34 «Старые коммиты из ветки feature (2702, 2c11) в ветке master уже есть. Так что повторное слияние их проигнорирует. В результате они просто пропадут». Но они не пропадут, изменения из этих коммитов не были отменены коммитом 0cc5. Так?
git revert 38e8 -m -1 - это revert коммита 38e8 с дифом по 1-му родителю (ветка master), т.е. оно берет противоположный diff от 38e8 до 4594 и создает коммит с этими измениями. В итоге 0cc5 имеет состояние аналогичное 4594. Ну и дополню , что при повторном merge 2с11 и все коммиты ниже будут пропущены, т.к. у feature и master общий родитель 2c11, а merge принимает во внимание только коммиты после общего родителя веток, в нашем случае это будет 2c11.
В объяснениях Ильи есть противоречие, которое верно подметил Green Storm, заключающееся в том, что обратный коммит делается к объединяющему относительно ветки master, т.е. ветка feature в нем как бы остается, однако позже утверждается, что все коммиты ниже будут пропущены. На 1:05 речь идет не об отмене, а о сохранении изменений. Я бы на месте Ильи на 01:08 закрасил другую ветку и сказал: "такая команда revert ОТМЕНЯЕТ изменения, внесенные в слияние веткой feature и СОХРАНЯЕТ изменения, внесенные веткой master". Тогда не возникло бы вопросов о том, куда пропали коммиты 2702 и 2c11.
Согласен, тоже это не понял, думал, что дело во мне (моного раз переслушал, не понимая), оказывается не один я заметил - действительно, речь ведь ранее шла о revert ветки master, а потом почему то автор заговорил о реверте feature. Поэтому коммиты feature, даже если пропадут, все равно останутся в ветке master, так как ранее туда были замерджены и при этом не зареверчены). Поэтому и конфликтов, о которых говорит автор не должно быть.
Вообще, от этого reverta попахивает паранойей. Сначала выбросили из слияния коммиты 2702 и 2c11, потом кричим: ой-ой, а как же без них, давай делать отмену отмены...
Ссылки:
- Git курс (playlist): th-cam.com/video/W4hoc24K93E/w-d-xo.html
- Git разное (playlist): th-cam.com/video/8HxTHPkdedA/w-d-xo.html
- Учебник и курсы по JavaScript и смежных технологиям: learn.javascript.ru
2:59 так мы же сами из заревертили (хотя на самом деле было сказано ранее о реверте коммита из ветки master, а не feature - видимо автор ошибся), а потом пытаемя обойти). Называется "создать проблему, чтобы пытаться героически ее решить").
1:43
2:59
3:16 взять коммит из ветки master с помощью cherry-pick
3:36 отмена коммита отмены (git revert [коммит отмены]) - более надежный вариант, нежели cherry-pick слияния
4:33 проверка
4:49 завершение повторного слияния
4:53 итог
5:07
Спасибо. Не знал, что отменить слияние можно простым ревертом. И конечно важно учесть нюанс при повторном вливании исправленной ветки
узнал что-то новое! спасибо!
Настанет день, когда я пойму, что сказано в этом выпуске. Потому что пока что ничего не понятно((
1:05 Коммит отмены 0cc5 отменяет изменения из ветки master.
2:34 «Старые коммиты из ветки feature (2702, 2c11) в ветке master уже есть. Так что повторное слияние их проигнорирует. В результате они просто пропадут». Но они не пропадут, изменения из этих коммитов не были отменены коммитом 0cc5. Так?
git revert 38e8 -m -1 - это revert коммита 38e8 с дифом по 1-му родителю (ветка master), т.е. оно берет противоположный diff от 38e8 до 4594 и создает коммит с этими измениями. В итоге 0cc5 имеет состояние аналогичное 4594. Ну и дополню , что при повторном merge 2с11 и все коммиты ниже будут пропущены, т.к. у feature и master общий родитель 2c11, а merge принимает во внимание только коммиты после общего родителя веток, в нашем случае это будет 2c11.
В объяснениях Ильи есть противоречие, которое верно подметил Green Storm, заключающееся в том, что обратный коммит делается к объединяющему относительно ветки master, т.е. ветка feature в нем как бы остается, однако позже утверждается, что все коммиты ниже будут пропущены. На 1:05 речь идет не об отмене, а о сохранении изменений. Я бы на месте Ильи на 01:08 закрасил другую ветку и сказал: "такая команда revert ОТМЕНЯЕТ изменения, внесенные в слияние веткой feature и СОХРАНЯЕТ изменения, внесенные веткой master". Тогда не возникло бы вопросов о том, куда пропали коммиты 2702 и 2c11.
Согласен, тоже это не понял, думал, что дело во мне (моного раз переслушал, не понимая), оказывается не один я заметил - действительно, речь ведь ранее шла о revert ветки master, а потом почему то автор заговорил о реверте feature. Поэтому коммиты feature, даже если пропадут, все равно останутся в ветке master, так как ранее туда были замерджены и при этом не зареверчены). Поэтому и конфликтов, о которых говорит автор не должно быть.
Не легче ли сделать hotfix для мастера, и по желанию интегрировать hotfix в feature?! Нагляднее и понятнее для всех участников.
Вообще, от этого reverta попахивает паранойей. Сначала выбросили из слияния коммиты 2702 и 2c11, потом кричим: ой-ой, а как же без них, давай делать отмену отмены...
+
Я думаю, подразумевается, что изменения в указанных коммитах все-таки нужные, но по ошибке не до конца завершенные
1:20 Как это ? Мастер + фючер - мастер = фючер.
OK!