Допустим я сделал слияние мастера в рабочую ветку,и решил удалить все функции и слить еще раз в нее мастер,почему при повтором слиянии функции которые есть в мастере не переносятся в рабочую ветку?
Asked
Active
Viewed 920 times
1 Answers
4
Почему повторное слияние не восстанавливает изменения
Ветки до слияния:
master: A — B — C — D — E
\
dev: P — Q — R
Производим слияние master в dev (что немного странно, чаще в обратном направлении делают слияние).
master: A — B — C — D — E
\ \
dev: P — Q — R — Merge
- Слияние создает новый коммит, такой что его предками являются два последних коммита каждой из сливаемых веток.
- Сам коммит слияния (merge commit) становится новым последним коммитом той ветки, в которую происходит слияние.
- Та ветка, которую сливают в другую, остается нетронутой.
решил удалить все функции
Если вы сохранили эти изменения в коммит(ы), то получается такая структура:
master: A — B — C — D — E
\ \
dev: P — Q — R — Merge — S
Пытаемся снова слить master в dev: ничего нового не происходит. Последний коммит E ветки master уже является прямым предком последнего коммита S ветки dev. Требуемый результат слияния уже присутствует, слияние не требуется.
Если вы еще не сохранили эти изменения в коммит, то с точки зрения Git вообще ничего не изменилось. Вы повторно выполняете слияние той же ветки в ту же ветку.
До и после.
master: A — B — C — D — E
\ \
dev: P — Q — R — Merge — (stage) — (working_area)
Nick Volynkin
- 34,094
-
Спасибо с этим моментом разобрался – quaresma89 Aug 16 '15 at 21:58
-
@quaresma89: про откаты изменений есть тут: http://ru.stackoverflow.com/q/431520/181472 – Nick Volynkin Aug 17 '15 at 04:34