我是git的初学者,主要依赖Source Tree之类的GUI工具,请多多包涵!
在我们的 git 存储库中,我们有多个依赖于非常相似的核心代码库的产品。我们通过每个产品都有一个分支来实现这一点。当我们刚开始开发时,我们还没有将其建立为工作流,所以我们的分支历史看起来有点像这样:
master
|
B | C
\ | /
\|/
|
| A
| /
|/
2
|
|
1
|
|
A、B 和 C 是特定于产品的分支,其中 A 是我们为客户提供的第一个产品。
问题
不幸的是,在第 (1) 点左右,我们已经在处理 A,并且已经开始提交大量 .png 文件(价值约 100MB),但还没有考虑将其作为一个单独的项目进行分支。我已经尝试从 B 和 C(以及 master 分支)的 repo 中删除这些大文件,但当然它们仍然在点 (1) 和 (2) 之间的 git 提交历史记录中。
那么,有什么方法可以重写历史记录,以便分支 A 实际上从点 1 开始,并将特定于该产品的所有文件移动到该分支中?值得庆幸的是,过滤掉与产品 A 相关的文件应该很容易,因为它们大多位于单独的目录中。
理论上,master 分支只需要 10MB 左右,因为它主要由代码组成,这意味着人们只能检查特定的产品分支,并且只能从 github 下载他们实际需要的文件。
谢谢!
编辑:注意,这是一个类似的问题: git: Split history of some files into a separate branch