Могу ли я объединить два репозитория Git с похожим контентом, но не разделять какие-либо родословные?

У меня есть две базы кода, Code base-1, Code Base-2.

Я запускаю команды...

git init
git add .
git commit -m "Initial Commit"

... в обоих репозиториях (каталогах).

Существуют различия кода между базой кода 1 и базой 2 кода.

Я не могу разветвлять их, потому что они уже содержат различия около 0,1%. Имена файлов одинаковы, но есть некоторые изменения в коде.

Есть ли способ объединить различия между двумя репозиториями?

Отредактировано:

Например, скажем, у меня есть следующее. Это то, с чем я начинаю. Между кодовой базой 1 и 2. существуют небольшие различия.

[oldest code case] 
code-base-1/ 
code-base-1/.git  [git stuff with already created repo] 
code-base-1/file1 
code-base-1/file2 

code-base-2/ 
code-base-2/.git [git stuff with already created repo] 
code-base-2/file1 
code-base-2/file2 

В идеале я мог бы удалить код-base-2, потому что он немного новее.

Как бы я объединил эти базы кода, чтобы в итоге я получил один из них с объединенными файлами?

Ответы

Ответ 1

Проблема может возникнуть из-за того, что это два разных репозитория (с другим SHA-1 первым node), а не с одним клоном клонирования, а затем с измененным. Это означает, что "git fetch", вероятно, недостаточно.

Вы можете просто использовать внешний инструмент (внешний для Git, который есть), чтобы объединить содержимое CB2 (Code-Base-2) в CB1, например WinMerge, как предлагается в вопросе "Слияние изменений вне репозитория Git.

Другой вариант будет использовать некоторые методы трансплантации для завершения выборки: см. вопрос "Можно ли объединить два идентично структурированных репозитория Git, когда у них никогда не было общей истории?"

$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project

Плюс изменить файл трансплантата (.git/info/grafts), чтобы связать коммиты проекта2 с проектом1.

Ответ 2

Try:

cd code-base-1
git fetch ../code-base-2 master:code-base-2
git merge code-base-2

Ответ 3

Создайте первый репозиторий, как вы описали.

Во второй папке создайте файл с именем ".git" с содержимым:

gitdir: <path-to-first-repository>/.git

Во втором репозитории вы можете запустить git diff, git add/commit и т.д., чтобы объединить ваши изменения.