Здравствуйте. У меня есть два репозитория
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
Готово.
Комментариев нет:
Отправить комментарий