根据所接触的文件将git Repository/history分为两个独立的分支

根据所接触的文件将git Repository/history分为两个独立的分支,git,Git,假设我有一个git回购协议,如下所示 分支机构主管 ./.gitignore ./README ./foo/ ./foo/magic.py ./foo/document.txt ./bar/ ./bar/baxy.c ./herp/ ./herp/derp.h 有很多提交、修改或创建这些文件。 如果我想将历史(不需要共享第一次初始提交,但如果需要的话也可以)分成两个分支(假设分支是最好的方式),然后将它们分成两个分支,该怎么办 分支A ./.gitignore ./foo/ ./foo/mag

假设我有一个git回购协议,如下所示

分支机构主管

./.gitignore
./README
./foo/
./foo/magic.py
./foo/document.txt
./bar/
./bar/baxy.c
./herp/
./herp/derp.h
有很多提交、修改或创建这些文件。 如果我想将历史(不需要共享第一次初始提交,但如果需要的话也可以)分成两个分支(假设分支是最好的方式),然后将它们分成两个分支,该怎么办

分支A

./.gitignore
./foo/
./foo/magic.py
./foo/document.txt
分支机构B

./.gitignore
./README
./bar/
./bar/baxy.c
./herp/
./herp/derp.h
例如,不能保证在同一个提交中提交没有同时触及
foo/magic.py
herp/derp.h
。分支应该具有影响这些文件的提交的所有历史记录,可以分解影响多个文件的提交(跨越历史记录分割)

我该怎么做?(我曾考虑过耸耸肩,复制文件,说“去他妈的历史”,但这似乎是一种逃避。)

编辑:


非常确定,
git filter branch
在这里持有密钥,但以前从未使用过它,我将进行一些阅读。

这不是一个完整的解决方案,但是
git filter branch——子目录filter foo
将重写存储库,使其具有一个新的./foo根,因此看起来像

./magic.py
./document.txt
伴随着这些犯罪的历史

它确实非常接近我想要的,一个.gitignore文件的历史记录不是必需的,并且可以很容易地作为第一次提交追溯插入,因为我们正在破坏SHA1哈希兼容性