我在两个分支上工作,A 和 B。在主分支上,我决定删除一些占用项目历史记录空间的大型二进制文件。我这样做是使用:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch "Filename"' \
--prune-empty --tag-name-filter cat -- --all
(来自此站点)在 A 分支上。
然而,在这样做之后,我又回到了 B 分支上,它的历史还没有被重写。这导致了以下提交树
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
+----+ +----+ +----+ +----+ /
| B1 |->| B2 |->| B3 |->| B4 |--/
+----+ +----+ +----+ +----+
其中 A1 和 A2 与 B1 和 B2 的提交相同,但缺少二进制文件。我怎样才能从 B 中删除二进制文件并使提交树看起来像这样:
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
\ +----+ +----+ /
\->| B3 |->| B4 |--/
+----+ +----+