Страницы

Поиск по вопросам

четверг, 20 июня 2019 г.

переместить файлы из одного репозитория в другой с историей коммитов

Здравствуйте. У меня есть два репозитория
Checker.rep
1Ch.file 2Ch.file 3Ch.file
Main.rep
Checker.folder
Подскажите как переместить файлы из репозитория Checker.rep в папку Checker.folder так, чтобы история коммитов сохранилась и можно было удалить оставшийся пустой репозиторий Checker?


Ответ

Поскольку это две отдельных несвязанных истории, чтобы их связать, придётся делать слияние. Сбивает с толку тот факт, что ветки в разных репозиториях, и как слияние делать, неясно... это поправимо, хотя и не совсем так, как по ссылке. Один репозиторий можно затянуть в другой.
Просто делать pull из другого репозитория не стоит, потому что в этом случае файлы из корня одного репозитория попадут в корень другого, а цель немножко другая. Поэтому вместо pull сделаем то, из чего он состоит: fetch+merge
В Main.rep
git remote add checker путь/к/Checker.rep # указать источник git fetch checker # только скачать (!) коммиты # warning: no common commits # <- ну, это ожидаемо # remote: Counting objects: 5, done. # remote: Compressing objects: 100% (4/4), done. # remote: Total 5 (delta 1), reused 0 (delta 0) # Unpacking objects: 100% (5/5), done. # From путь/к/Checker.rep # * [new branch] master -> checker/master git merge checker/master --no-commit
Интерес представляет флаг --no-commit (ради этого и затевался обход вокруг pull), который после завершения процедуры слияния остановит Git, чтобы можно было поправить результаты. Самое время закинуть прилетевшие при слиянии файлы в нужную папку:
git mv *Ch.file Checker.folder
Вот вроде и всё, достигнуто желаемое состояние.
git commit
Готово.

Комментариев нет:

Отправить комментарий