Как объединить код после запуска prettify вверх по течению

#git #merge #prettify

#git #слияние #prettify

Вопрос:

Я поддерживаю форк проекта с открытым исходным кодом, в котором мы примерно каждый месяц извлекаем из upstream, чтобы не слишком сильно разветвляться.

Когда я попытался извлечь данные из upstream в этом месяце, я обнаружил, что они запустили prettify (или какой-то другой эквивалент) по всему коду (~ 15 000 файлов), и практически каждое изменение, которое мы внесли в наш форк с момента последнего извлечения (а их было довольно много), вызывает конфликты.

Кто-нибудь когда-нибудь сталкивался с этой проблемой? Был бы признателен за любую помощь, если есть какой-либо способ объединить это быстрее, чем вручную 3-полосное объединение каждого файла.

Спасибо.

РЕДАКТИРОВАТЬ: у меня нет доступа на запись к проекту upstream, с моей точки зрения, он доступен только для чтения.

Ответ №1:

Если это инструмент, к которому у вас есть доступ, способ с наименьшими усилиями (и потерей истории) будет:

 # checkout the last revision that you merged from upstream _before_ the beautifying process was run in upstream
# run the tool on that revision
git checkout -b the-temp-branch
git commit -m "beautifying base revision"
# now we will create from thing air a revision that has this revision and the tip of the upstream branch as parents, content will be the same as the beautified upstream branch
git commit-tree -p HEAD -p the-upstream-branch -m "merging upstream branch" the-upstream-branch^{tree}
# that command will print an id when you run it... say that ID is XXXX
# set the temp branch over there
git branch -f the-temp-branch XXXX
# go to the tip of your downstream branch
# run the tool
git reset --soft the-temp-branch~
git commit -m "all our changes in a single shot"
# now you can merge the-temp-branch and get all upstream changes... there should not be that many conflics..... move the downstream branch over here when you are done
  

Вы можете использовать ту же концепцию, если хотите переписать все промежуточные последующие ревизии вместо одной ревизии со всеми этими изменениями …. это просто больше работы.

Ответ №2:

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

Комментарии:

1. Я действительно хочу объединить свой код, это не было проблемой, проблема заключалась в том, как это сделать, когда каждая отдельная строка вызывает конфликт. В любом случае, я думаю, что я соглашусь с предложением eftshift0, стоит попробовать.