Я столкнулся с проблемой, когда я опубликовал ветку в моем общедоступном репозитории git, в которой была неправильная родительская ветка. Мои попытки исправить это усугубили ситуацию.
Изначально у меня было:
A <-- master
\
B <-- abstract-test-rule
\
C <-- run-leaf
Я отправил abstract-test-rule и run-leaf в мой общедоступный репозиторий github и сделал запросы на получение каждого из них. Затем я понял, что "run-leaf" включает коммит B; Я имел в виду разветвить «беги-лист» от «А». Итак, я запустил git revert B
на ветке "run-leaf":
A <-- master
\
B <-- abstract-test-rule
\
C--B' <-- run-leaf
Я снова отправил «run-leaf» в мой публичный репозиторий github.
Вопрос 1: Что я должен был сделать? Я предполагаю, что правильнее было бы создать новую ветвь из A только с дельтой из коммита C, перенести ее в мой публичный репозиторий github, отменить предыдущий запрос на извлечение и создать новый. Какой самый простой способ сделать это?
К сожалению, ветвь "run-leaf" была объединена с родительским репозиторием из коммита C , а затем B 'была объединена с родительским репозиторием.
Я знал, что объединение "abstract-test-rule" теперь будет болезненным для владельца родительского репозитория, поэтому я попытался подготовить "abstract-test-rule" для слияния. К этому времени мой репо выглядел так:
A <-- master
\
B--D--E <-- abstract-test-rule
\
C--B' <-- run-leaf
Я вошел в свой репо, вытащил из родительского репо в "master", а затем слил "master" в "abstract-test-rule". Слияние было беспорядочным (потому что, я полагаю, я сливал версию B 'родительского репозитория в "abstract-test-rule"). После всего этого у нас есть очень запутанные различия .
Вопрос 2: Был ли для меня более простой способ очистить "abstract-test-rule"? Другими словами, я хотел объединить «master» в «abstract-test-rule», но избегать слияния версии B 'моего репо-репозитория в «abstract-test-rule»
Вопрос 3: Каков наилучший способ убедиться, что слияния с родительским репозиторием были выполнены правильно? Прямо сейчас я просто вытаскиваю из родительского репозитория, объединяю свою версию веток с "master" (просматривая различия из слияния) и запускаю git diff master
, чтобы убедиться, что ветвь теперь идентична "master"
Спасибо!