Можно ли переместить кучу файлов из одного репозитория git в другой, сохранив (большую часть) историю? - PullRequest
4 голосов
/ 07 июля 2010

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

Возможно ли получитьэти файлы и переместить их в другой репозиторий git вместе с их историей?Мне все равно, останутся ли их остатки в их нынешнем или нет, если у нового есть все это.

Ответы [ 3 ]

2 голосов
/ 07 июля 2010

С помощью git log -p <filename> > <patchfile> (см. doc ) вы можете экспортировать всю историю файла, которая затем может быть применена к другому репо через git apply --reverse --index <patchfile>. Однако это не воссоздает коммиты, и я не выяснил переключатель для git-apply, чтобы сделать это.

Если вы хотите избавиться от файла в исходном репо, см. «Как удалить конфиденциальные файлы из истории Git?» .

1 голос
/ 07 июля 2010

Вы можете сделать что-то вроде следующего.

  1. Используйте git fetch, чтобы вытянуть кончик ветки с нужными файлами из неправильного репозитория в правильный репозиторий.Используйте git filter-branch с --tree-filter или --index-filter, чтобы удалить из выбранной ветви все, кроме нужных файлов.
  2. Используйте git rebase или повторно примените исправленные коммиты к соответствующей основной ветвиправильный репозиторий.
0 голосов
/ 07 июля 2010

Вы можете попробовать git format-patch в ветви, над которой вы работаете, чтобы сгенерировать патчи для последних коммитов, неправильно сделанных в этом репо.
См. этот SO вопрос .

Затем вы примените этот путь к правильному репо.
И вы reset --hard вашей текущей ветке, чтобы избавиться от дополнительного коммита.

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