可能重复:如何在保留子目录的情况下拆分Git存储库?
曾经我把我的代码添加到了一个现有的Git仓库中,自那以后我已经向其中提交了很多次代码修改,另一位开发者则向仓库中的其他文件进行了提交。现在我想将我的代码拆分到它自己的仓库中,但保留我的特定文件的所有更改历史记录。
通过阅读其他人为分离代码所做的工作,我正在研究使用“filter-branch”和使用“--index-filter”或“--tree-filter”与“rm”命令来处理我不关心的文件。我不想使用“--subdirectory-filter”,因为它不适用于包含我的代码的子目录成为顶级目录(我们也共享一个子目录) 。复杂化问题的是,原始存储库中的某些文件随着时间的推移已经移动了位置,并且还有一些创建然后被删除的文件。这使得设计一个删除列表有点具有挑战性。
我正在寻找一种方式来过滤除了一系列文件/目录之外的所有内容。有人知道如何实现吗?
通过阅读其他人为分离代码所做的工作,我正在研究使用“filter-branch”和使用“--index-filter”或“--tree-filter”与“rm”命令来处理我不关心的文件。我不想使用“--subdirectory-filter”,因为它不适用于包含我的代码的子目录成为顶级目录(我们也共享一个子目录) 。复杂化问题的是,原始存储库中的某些文件随着时间的推移已经移动了位置,并且还有一些创建然后被删除的文件。这使得设计一个删除列表有点具有挑战性。
我正在寻找一种方式来过滤除了一系列文件/目录之外的所有内容。有人知道如何实现吗?
git filter-branch --prune-empty --index-filter 'git ls-tree -r --name-only --full-tree $GIT_COMMIT | grep -v "^src/pyfedpkg$" |grep -v "^src/fedpkg" |grep -v "^git-changelog" | xargs git rm --cached -r' -- --all
已完成。 - jkeating