假设我有一个如下所示的git repo。
分支大师
./.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
在这里持有密钥,但以前从未使用它,会做一些阅读。
答案 0 :(得分:0)
这不是一个完整的解决方案,但git filter-branch --subdirectory-filter foo
会重写存储库以获得./foo的新根,所以它看起来像
./magic.py
./document.txt
附上这些承诺的历史记录。
它肯定足够接近我想要的东西,.gitignore文件的历史记录不是必需的,并且可以很容易地作为第一次提交追溯插入,因为我们无论如何都打破了SHA1哈希兼容性。