Я пытаюсь объединить эти два содержимого файла в новый файл. У меня уже есть левое и правое содержимое в виде объектов JSON с номерами строк и содержимым строк.
Например, я хочу выбрать левую часть и оставить правую часть в новом файле после слияния. Так как номера строк разные. Как мы будем добавлять левый контент из 214-й строки?
Все, что мне нужно, — это окончательный объект JSON, фиксирующий решения о слиянии с номерами строк. Как только я получу слияние JSON. Я буду использовать любой язык программирования для создания нового файла и этих изменений.
ПРИМЕЧАНИЕ. При слиянии я беру правильный файл в качестве основной ссылки. Я возьму копию правого файла и добавлю левое содержимое по мере выбора.
1 ответ
Как прокомментировал Алексей Цалолихин , то, что вы показываете, это XML, а не JSON (закодированный в текст). Это не так уж и важно: оба просто предоставляют средства кодирования данных с древовидной структурой.
Git не понимает ничего из этого. Код слияния Git обрабатывает файлы как строки (текста). Это нормально, поскольку вы планируете выполнить слияние самостоятельно (с помощью кода, вручную или как-то еще).
Обратите внимание, что сравнение или слияние данных с древовидной структурой, независимо от их кодировки, по своей сути является сложным. Он не должен использовать номера строк. Вероятно, он должен проверять, совпадают ли поддеревья, и если да, считать их перемещенными, даже если они изменили глубину.
Если вы выполнили слияние самостоятельно и результат должен быть закодирован в тексте, закодируйте его в текст и вставьте туда, куда он идет, и отдайте Git результат в виде текстового файла. Все, что нужно git merge
, — это окончательный текстовый файл. Входными данными для слияния были три текстовых файла — один из базового коммита слияния, второй из текущего коммита и третий из другого коммита, который объединяется, — и Git нужен новый текст файл.
Итак, возьмите результат слияния, закодируйте его как текст, и все готово: запишите его в соответствующий файл (или соответствующую часть соответствующего файла) и сообщите Git это правильный результат слияния. Другими словами, запишите результат и запустите git add path/to/file
.
ПРИМЕЧАНИЕ. При слиянии я беру правильный файл в качестве основной ссылки. Я возьму копию правого файла и добавлю левое содержимое по мере выбора.
Для слияния есть три входа. Нет "левых" и "правых": есть база слияния, наша и их. Дельта от базы до нашей показывает, что мы изменили. Дельта от основания до их представляет то, что они изменили. Ваша задача — объединить эти изменения.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.