【发布时间】:2017-08-11 10:30:55
【问题描述】:
我正在尝试在两个 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,但在此存储库生命周期的某个时刻已经存在。弄清楚这个 repo 历史上存在的所有东西似乎很乏味 - 一定有更好的方法
我如何最终得到一个只包含这三个文件的 git 提交树?
有没有比我建议的更好的方法?
或者,有没有办法删除HEAD 上当前不存在的所有文件的痕迹?
【问题讨论】:
标签: git git-filter-branch