Могу ли я объединить два репозитория 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 и т.д., чтобы объединить ваши изменения.