我正在研究兩個分支A和B.在主分支上,我決定刪除佔用項目歷史記錄空間的一些大型二進制文件。我這樣使用:在分支上的從歷史記錄中刪除文件後的Rebase分支
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch "Filename"' \
--prune-empty --tag-name-filter cat -- --all
(來自this site)。
然而,在這樣做之後,我又回到了B分支上工作,這個B分支沒有重寫歷史。這導致了以下承諾樹
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
+----+ +----+ +----+ +----+ /
| B1 |->| B2 |->| B3 |->| B4 |--/
+----+ +----+ +----+ +----+
其中A1和A2是相同的提交B1和除了缺少的二進制文件B2。我怎麼能刪除從B二進制文件以及並提交樹是這樣的:
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
\ +----+ +----+ /
\->| B3 |->| B4 |--/
+----+ +----+