Копировать цепочку фиксаций между репозиториями

Как я могу скопировать цепочку коммитов из одного git (или svn) репозитория в другой?

Если бы у меня была только одна фиксация, которую я бы сделал:

cd Git1 git diff commitHash^ commitHash > patch.txt cd Git2 git branch CommitsFromGit1 git checkout CommitsFromGit1 patch -i ....Git1/patch.txt git ci -am "CommitFromGit1Name" 

Но у меня слишком много коммитов для продолжения вручную по одному. Есть ли способ создать somekind из нескольких патчей, с набором коммитов-изменений?

Назовем ваши gits A и B и скажем, что вы работаете над главной ветвью. Пока в git A, добавьте B как удаленный и выберите его содержимое в A:

 git remote add B /path/to/B git fetch B 

(Вам не нужно добавлять его как удаленный, вы можете просто сделать git fetch /path/to/B master:B/master если хотите. Это копирует все ветви в B, которые могут быть ненужными в вашем случае. для указания явного refspec для ограничения выборки.)

Теперь вы можете использовать git-cherrypick для копирования отдельных git-cherrypick из B в A или использовать git rebase --onto для копирования нескольких git rebase --onto . Последняя команда имеет этот общий вид:

 git rebase --onto destination boundary starting_point 

Git идет назад от starting_point до тех пор, пока не достигнет boundary и скопирует полученные коммиты (исключая boundary ) на конец пункта destination . Таким образом, это копирует три последних коммита из ведущей ветки B в главную ветку A:

 git rebase --onto master B/master~3 B/master