Я работал над веткой функций B, которую я разветвлял от мастера месяц назад.По мере появления других новых функций ветка master постоянно обновлялась.
Вот так выглядит основная ветвь прямо сейчас:
1 -> 2 -> 3 -> 4 -> 5 -> 6 ->7
Когда я впервые разветвился, это выглядело так:
1 -> 2 -> 3
Вот как мойветвь функции (B) выглядит прямо сейчас:
x -> y -> z
Теперь, когда я готов перевести мою новую функцию в мастер, мне посоветовали сначала выполнить ребазинг от мастера, а затем создать PR.
При выполнении git rebase
моя ветка столкнулась с конфликтом слияния с парой файлов.Я думал, что просто сохраню входящие изменения, и ребаз будет проходить нормально.Однако я, разрешив конфликты, превратил весь шаг «REBASE MASTER» в своего рода «MERGE MASTER».АКА: Он применил коммиты, которые уже были объединены с мастером, в мою ветвь функций, а не то, что я изначально намеревался сделать с git rebase
.
Вот так сейчас выглядит моя ветвь функций:
x -> 4 -> 5 -> 6 -> y -> 7 -> z
Вот чего я хотел добиться (но не достиг):
1 -> 2 -> 3 -> 4 -> 5 -> 6 ->7 -> x -> y -> z
Как мне вернуться?Это уже было перенесено в удаленную ветку, поэтому я не могу просто удалить свою локальную ветку и снова извлечь из источника.
Один из способов, который я могу придумать, состоит в том, чтобы снова разветвляться от мастера и создавать ветвь функции C. Затем вишневый пик фиксирует коммит из B в C. Как только я уверен, что C является полной копией B (и содержит только коммиты, которые я хочу), я могу удалить B. Я что-то упустил?Или есть лучший / более быстрый способ?