Пожалуйста, извините за мой давний вопрос, так как я даже не уверен, что спросить или как его сформулировать.
Мы работаем в монорепо с несколькими ветвями. Есть ветка 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
.
Я думаю, что, возможно, некоторые из причин, по которым это произошло, заключались в том, что у нас была смесь прямых фиксаций, ребазинга и слияния как для разработки, так и для нашей ветви, а также смесь слияний и ребазировок от разработки к нашей ветви. Теперь они не совпадают, и различные папки и файлы не имеют одинакового содержимого между двумя ветвями, папками и файлами, которые мы не изменили (или не должны были) изменить вне папки проекта в нашей ветви. Если есть способ отменить все изменения в файлах и папках за пределами нашей в течение истории нашего филиала, я думаю, что это в конечном итоге то, что мы хотим.