【发布时间】:2011-08-25 08:00:42
【问题描述】:
可能重复:
How to split a git repository while preserving subdirectories?
有一次,我将我的代码添加到了现有的 git 存储库中,并且从那以后已经提交了很多,而另一位开发人员已经提交了存储库中的其他现有文件。 现在我想将我的代码拆分到自己的仓库中,但保留我的特定文件的所有更改历史记录。
阅读其他人为拆分代码所做的工作,我查看了filter-branch,并对我不关心的文件使用rm 命令执行--index-filter 或--tree-filter。我不想使用--subdirectory-filter,因为保存我的代码的子目录不适合作为顶层目录(我们也共享一个子目录)。更复杂的是,原始存储库中的一些文件随着时间的推移发生了一些变化,并且有一些文件被创建然后被删除。这使得设计一个 rm 列表有点……具有挑战性。
我正在寻找一种过滤所有内容/除了/文件/目录列表的方法。有人知道这样做的方法吗?
【问题讨论】:
-
谢谢。用
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完成它 -
与stackoverflow.com/questions/2797191/…(恕我直言)不同,因为它要求保留一组特定的稀疏文件。
-
这不是重复的!那里提供的问题/答案 (2797191) 仅适用于单个目录下的文件。这个问题要求一组文件,不必要地分组在一个目录下。
标签: git git-filter-branch