Я пытаюсь переместить некоторые файлы между двумя репозиториями git repo1
и repo2
. У меня есть небольшой список файлов, которые я хотел бы переместить (с сохранением истории).
Три файла для перемещения из repo1
:
libraryname/file1
libraryname/file2
tests/libraryname/file3
В libraryname/
и tests/libraryname/
есть другие файлы. В /
и tests/
есть другие папки
Мой план состоит в том, чтобы извлечь repo1
, а затем изменить дерево истории, пока оно не будет содержать историю только для интересующих меня файлов. Затем извлечь repo2
и объединить выходные данные предыдущей операции. Кажется, что git filter-branch
— правильный инструмент для первого шага.
До сих пор я пробовал git filter-branch --index-filter 'git rm -r --cached <FILES>'
Где <FILES>
перечислены все нежелательные целые папки или файлы.
Но это оставляет много папок, которые больше не существуют в HEAD
, но существовали в какой-то момент времени существования этого репозитория. Кажется довольно утомительным выяснять все, что существовало в истории этого репозитория - должен быть лучший способ
Как мне получить дерево коммитов git, которое включает только эти три файла? Есть ли лучший способ, чем я предлагаю? Или есть способ удалить следы всех файлов, которые в настоящее время не существуют в HEAD
?