问题摘要
我需要将几个文件从一个存储库移动到另一个存储库,同时保留其更改历史记录。我已经将它们在源存储库中移到了git mv
的专用文件夹中(根据Greg Bauer广泛引用的post,这导致在遵循Greg的脚本时,所有文件夹移动前的历史记录都没有复制到目标存储库中
在每个涉及的存储库中,我只有一个master分支。
对于第一个源存储库,原始文件在移至专用文件夹之前曾经位于根文件夹中。
在第二个源存储库的情况下,(其他)原始文件通常位于一个第一级文件夹中,该文件夹还存储许多其他文件(我不需要移动这些文件)。
目标存储库已经有了我需要保留的其他一些文件和文件夹,以及其提交历史记录。
最后,如果将所有内容正确地复制到目标存储库中,则我需要一种干净的方法来从源存储库中删除(隐藏?)原始文件。
更新2019-03-25 12:00 UTC:有关我的处境的更多详细信息,紧跟torek's brilliant explanation:
我考虑过的东西-但未能使用“现成的”:
我不熟悉GIT信息库的结构,因此Stage 1, step 5中的'git ls-files ... | grep ...
INDEX_FILE ... git update-index ...
听起来像是我的魔力。
从answer to another question起,目前尚不清楚是否对已经移到专用文件夹中的单个文件有所帮助(和/或在迁移之前回滚该移动是否安全)。
此外,我该如何决定是否/不使用these steps:
git reflog expire --expire=now --all
git reset --hard
git gc --aggressive
git prune
我也在努力从this post中的一组代码片段中编译单个脚本,这似乎也很相关。