2014-02-04 2 views
0

Я немного поработал над проектом, который я разветвил в GitHub. Исходный проект, который я выделил, изначально был преобразован из проекта Mercurial в Codeplex.Частичное объединение репозитория git

Теперь я узнал, что кто-то еще преобразовал проект Mercurial в GitHub, но на более поздней стадии и, кроме того, добавил некоторые положительные эффекты в git. Я хотел бы разблокировать другое репо и воспроизвести мои коммиты, так как другое репо кажется активным. Я также хочу обновить новое репо с новыми изменениями в первоначальном репозитории Mercurial.

Так вот сценарий:

My repo: 
hg1->hg2->hg3->my1->my2 
       | 
       ->my3 
hgN is the original Mercurial commits, myN is my git commits. 

Other guy: 
HG1->HG2->HG3->HG4->HG5->og1->og2 
HG1-HG3 are identical to hg1-hg3. Same file tree but with different hash though. 
ogN are git commits by that other guy. 

What I want: 
HG1->HG2->HG3->HG4->HG5->og1->og2 
      | 
      ->my1->my2 
      | 
      ->my3 

Предполагая, что я клонировал как операции РЕПО, и мои изменения включают в себя некоторые ветви, как бы я создать объединенный репозиторий?

Что делать, если мои изменения были в одной ветке. Могу ли я сделать простую замену?

+0

Истории несовместимы? У меня создалось впечатление, что hg to git conversion является детерминированным (в отличие от svn to git one), и поэтому независимые преобразования конвертировали те же изменения hg в ревизии _same_ git. Разве это не так? –

+0

, по-видимому, два репозитория GitHub использовали разные методы для преобразования hg-репо. Эти два git-commits соответствуют одному и тому же hg-commit. но имеют разные хэш-ключи: [репо 1] (https://github.com/KevinHoward/Irony/commit/3ec2f63d97ccbae8f34473102f8874e11c3e7add) и [репо 2] (https://github.com/Alxandr/Irony/commit/2cde698432976bea19929492629e1fa55400b413) – Holstebroe

ответ

0

Если я понимаю вас правильно, вы хотите создать 1 репо из 2 (пусть это будет происхождение с http://hg_repo.com url и my_repo с http://my_repo.com). Вы можете попробовать следующим образом:

git clone hg_repo 
git remote add my_repo http://my_repo.com 
git fetch --all 
git checkout HG3 
git branch my_new_branch 
git cherry-pick my1 
git cherry-pick my2 
+0

Является ли вишневый сбор действительно лучшим вариантом? Что делать, если мои изменения были сложными с множеством коммитов, филиалов и слияний? – Holstebroe

+0

Я бы хотел, чтобы мои изменения отображались как дерево, разветвленное из HG3. – Holstebroe

+0

http://stackoverflow.com/a/1994491/2842568 Этот пост содержит исчерпывающий ответ на ваш первый комментарий. –

Смежные вопросы