Git rebase конфликтов, отменить все изменения в папке в истории - PullRequest
0 голосов
/ 23 мая 2019

Пожалуйста, извините за мой давний вопрос, так как я даже не уверен, что спросить или как его сформулировать.

Мы работаем в монорепо с несколькими ветвями. Есть ветка develop, которая является базовой веткой, но тогда у нас также есть ветка project-folder-develop, которая должна содержать изменения только в папке этого проекта. Где-то каким-то образом история project-folder-develop отличается от develop, и когда мы пытаемся объединить develop в project-folder-develop, не все изменения вступают в силу, и когда мы пытаемся перебазировать, возникает больше конфликтов, чем мы можем разрешить.

develop:

  • некоторые файлы
  • некоторые папки
    • некоторые файлы

project-folder-develop:

  • некоторые файлы
  • некоторые папки
    • некоторые файлы
  • наша папка
    • наши файлы

Наша ветвь должна иметь изменения только в пределах our folder в нашей ветке (она даже не существует в develop), но по какой-то причине мы не соответствовали изменениям вне этой папки, которые кажутся некоторыми из коммитов до develop и не до других.

Это настоящий беспорядок. Есть ли способ отменить все изменения за пределами папки нашего проекта в истории нашей ветки, поэтому, когда мы объединяем или перебазируем develop in, а затем нашу ветку обратно в develop, ни одно из изменений за пределами нашей папки проекта в нашей ветке больше не существует и их изменения являются единственными.

Поскольку это monorepo, вероятно, существуют тысячи файлов, сотни коммитов в день (прямые коммиты, слияние и / или перебазирование всех их ветвей функций) и т. Д. Итак, проходим их и разрешаем конфликты (особенно для файлы, с которыми мы не знакомы и которые рассредоточены по дюжине команд и сотням разработчиков), вероятно, является непреодолимой задачей.

«Эффективный» результат был бы таким, как если бы мы извлекли our project folder из our project branch, обнулили ветвь, затем скопировали our project folder обратно в develop, поэтому никаких изменений вне этой папки не существует, за исключением того, что мы хотели бы сохранить историю изменений на our project folder без какой-либо истории за пределами our project folder.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...