Итак, моя проблема такова: у меня есть 2 разных репозитория, и мне нужно сделать другой, новый, содержащий файлы из этих двух. Однако репозитории совместно используют некоторые файлы (например, main.c), которые я хочу объединить вручную... Я пытался объединить репозитории с помощью этого руководства: http://blog.caplin.com/2013/18/09/merging-two-git-repositories/, однако я получить только одну «копию» main.c. Может быть, я не понимаю, как работает git (я новичок в этом), но мне действительно нужно, чтобы git дал мне два файла, которые затем я мог бы вручную изменить и превратить в новый main.c... Надеюсь, я Я ясно дал понять о своей проблеме ... Я мог бы просто сделать две разные рабочие копии этих репозиториев, скопировать содержимое и создать новый репозиторий ... Но тогда история будет потеряна, верно?
Git — как объединить несколько репозиториев с общими файлами?
Ответы (2)
Создайте репозиторий с ДВУМЯ пультами, используя git add remote
- http://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
Клонируйте первый удаленный сервер, чтобы создать начальный набор файлов локально — http://git-scm.com/docs/git-clone
Затем используйте git pull [remote2] для получения файлов из другого репозитория — http://git-scm.com/docs/git-pull
Затем разрешите любые конфликты кода.
Затем, при желании, добавьте третий пульт для нового репо и вставьте в него код кода.
git pull ps3 master
и заработало. Однако, когда я пытаюсь git pull ps4 master
, я получаю: From *******... * branch master -> FETCH_HEAD * [new branch] master -> p4/master Already up-to-date.
. И это не актуально, потому что ps4 (мой второй пульт) имеет другой main.c, чем мой ps3 ...
- person JinLisek; 11.12.2014
Вам нужно выбрать центральную точку. Для проекта_a это будет значение по умолчанию, ваш репозиторий кода в https://path.toyourproject.com/p/project_a. Начните с проверки и перемещения всего его содержимого в подкаталог:
$ git clone https://path.toyourproject.com/p/project_a
$ cd project_a
$ mkdir project_a-cli
$ git mv * project_a-cli
$ git commit -a -m "Move."
Теперь вы готовы приступить к слиянию вторичного репозитория. Например, https://path.toyourproject.com/p/project.testers
Первый шаг — добавить этот вторичный репозиторий в центральную точку.
$ git remote add origin-testers https://code.google.com/p/project.testers
$ git fetch origin-testers
разместите его во временной ветке и переместите все его содержимое в подкаталог
$ git branch merge-testers origin-testers/master
$ mkdir project.testers-testers
$ git mv * project.testers-testers
$ git commit -a -m "Move."
Объединить два репозитория в один
$ git checkout master
$ git merge merge-testers
Очистка
$ git branch -d merge-testers
$ git remote remove origin-testers
после этого разрешить конфликты вручную. вы можете установить инструмент визуального сравнения для Git.
git mv * project_a-cli
, я получаю сообщение о том, что фатально: невозможно переместить каталог в себя, source=project_a-cli, destination=project_a-cli/project_a-cli. Итак, я переместил файлы на git mv *.c project_a-cli
, и тогда это сработало. Та же фатальная ошибка произошла после получения второго репо и выполнения git mv * project.testers-testers
. Поэтому я попытался сделать то же самое, что и раньше: git mv *.c project.testers-testers
. Однако затем я получаю другую ошибку: fatal: bad source, source=*.c, destination=project.piask4-piask4/*.c.
- person JinLisek; 11.12.2014