Как мне объединить два репозитория git без общего корня, где все измененные файлы одинаковы? - PullRequest
9 голосов
/ 08 марта 2010

У меня есть git-cpan-init репо, который дал другой корневой узел от другого уже установленного репозитория git, который я нашел на github C: A: S: DBI . Я довольно много разработал в своем репо, и я хотел бы объединить или воспроизвести мои изменения на развилке более авторитетного репозитория. Кто-нибудь знает как это сделать? Я думаю, можно с уверенностью предположить, что ни один из файлов измененных файлов не отличается - кодовая база не была с 08 ноября.

Для ясности репозиторий git hub является официальным. Мой локальный репозиторий - это тот, который я хочу использовать в git hub, который показан как настоящий git fork.

Ответы [ 2 ]

15 голосов
/ 09 марта 2010

Вы должны иметь возможность добавить пульт в свой существующий репозиторий (используя git remote add), чтобы вы могли извлечь содержимое репозитория github в свой существующий репозиторий.

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

git rebase --onto R O             # R and O are sha1 ids (possibly abbreviated)

Это повторяет все ваши коммиты, начиная с O, на новый корневой коммит R.

Как только вы это сделаете, если вы не в курсе последней удаленной главной ветки, вы можете использовать обычную ребазу, чтобы туда попасть, и отслеживание истории в git позаботится о том, чтобы ваши изменения были применены таким образом, который имеет смысл .

git rebase <remote_name>/master   # where <remote_name> is whatever
                                  # you called the github remote when
                                  # you used git remote add
0 голосов
/ 09 марта 2010

A Точка пересадки помог бы, я думаю.

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