Git: Слить ветку снова после возврата - PullRequest
0 голосов
/ 29 сентября 2018

Пожалуйста, рассмотрите это дерево git:

local repo:
          C---D---E       feat
         /         \
    A---B---F---G---H---I dev

origin remote repo:
          C---D---E   feat
         /         \
    A---B---F---G---H dev

У нас есть git-репо с удаленным источником.Была ветка dev под названием feat, и она была объединена с dev после нескольких коммитов.Проблема в том, что ветка feat предоставила много модификаций ветке dev и имела много конфликтов, поэтому мы решили, что исходный код feat должен преобладать, и использовали опцию -X при объединении.Мы проверили результат слишком быстро и нажали на пульт.Но мы допустили ошибку, мы использовали -Xours вместо -Xtheirs при объединении, поэтому все конфликты автоматически разрешались с использованием кода ветви dev, а не кода feat.И все это было выдвинуто к происхождению.Это H коммит.

То, что я сделал локально, это git revert HEAD, что дало мне I коммит для отмены H коммит,Оттуда я попытался снова объединить ветвь feat с правильной опцией -Xtheirs, и git сообщает, что дерево уже обновлено, но модификации из ветки feat в исходном коде нет.

Я попытался перейти от feat, спасительной ветви, и объединить его с dev, но он сделал то же самое.Я попытался внести небольшие изменения в ветку feat и слиться с dev, но в dev переходят только небольшие изменения.

Итак, вот мой вопрос: как я могу вернуть работу, выполненную в ветке feat, в dev?

1 Ответ

0 голосов
/ 29 сентября 2018

Я бы просто взял dev назад во времени и повторил слияние:

git checkout dev
git reset --hard G # provide sha1 of the revision of G... and use with care, you know what they say of git reset hard
git merge -Xtheirs feat # this is what you wanted to do, right?
git push origin -f dev # set remote dev to have the rewritten history of local dev

Git позволяет переписать историю.Если имеет значение (ревизии совершенно другие, так что вы эффективно расходитесь .... если другие люди уже работают над старой веткой, то им придется перенести свою работу поверх новой ветки и так далее ... все же,это возможно).

...