Ответ 1
Если вы не видите никакой разницы, я подозреваю, что вы потеряли свои изменения. Вероятно, вы можете использовать git reflog
, чтобы идентифицировать ветвь, существовавшую до перезагрузки, и используйте git reset --hard <my-branch-tip-before-rebase>
, чтобы вернуть исходную ветку. И да, вам придется снова пройти процесс.: - (
Я не совсем уверен, как вы оказались с ними одинаково. Я бы ожидал увидеть следующее с помощью команды, которую вы дали:
1 = 2 = 3 = 4 (master)
\ \
\ 5' = 6' = 8' (my_branch)
\
5 = 6 = 7
В этом случае вы, вероятно, должны были использовать rebase --onto
:
git rebase --onto master <commit id for 6> my_branch
Это оставило бы вас с графом, который выглядел бы так:
1 = 2 = 3 = 4 (master)
\ \
\ 8' (my_branch)
\
5 = 6 = 7
Что касается потери ваших изменений, это требует немного практики, связанной с конфликтами слияния, особенно когда у вас есть пара больших блоков, которые выглядят почти одинаковыми. Я всегда прибегаю к рассмотрению фактической разницы, введенной коммитом, и попытка дразнить это изменение и объединить его с тем, что уже находится на ветке соответствующим образом. Я могу легко видеть, как ваши изменения потерялись там.
Одна вещь, которую нужно запомнить. Если вы не ожидаете кучу конфликтов слияния - потому что вы не чувствуете, что источники расходятся достаточно, видящий является предупреждающим флагом о том, что он делает что-то неправильно. Хорошо сделать резервную копию, выполнив git rebase --abort
, исследуя ветки и проверяя снова, если вы ожидаете конфликта. Удостоверьтесь, что обратите внимание на то, где произошел конфликт (обычно "Применить..." перед перезагрузкой удаляет вас в командную строку). Это обычно отличное место для начала.
Иногда конфликты неизбежны, и они утомительны для работы. Но я подозреваю, что с практикой вы столкнетесь с этой проблемой меньше.
Для получения дополнительной информации о пересадке изменений между ветвями рассмотрите справочную страницу git rebase. Найдите "rebase -onto". Первый хит должен приземлить вас в разделе, где говорится о пересадке изменений в другую ветку.