如何透過本機變更重新產生稀疏結帳索引?

如何透過本機變更重新產生稀疏結帳索引?

我使用帶有稀疏簽出的 git 來處理非常大的整體存儲庫的子集。結帳稀疏的情況下性能很好,沒有結帳的情況下就很糟糕。

有時我的索引會損壞(Xcode 的 git 整合是我正常的根本原因,但我已經透過各種不同的方式對其進行了管理)。

對於普通的工作樹,這很好,我只需刪除索引文件,並且git reset我可能進行了一些分階段的更改,這些更改會回落到未分階段,但通常我不會丟失任何重要的內容。

但是對於稀疏簽出,git reset不會從頭開始考慮稀疏清單,因此會得出結論,完整存儲庫中不在工作樹中的所有文件(即我的稀疏簽出排除的所有文件)都必須是已刪除,給我留下了一大堆“已刪除”文件。

因此,使用稀疏簽出資訊(即設定skip-worktree標誌)重置索引的建議方法是調用git read-tree -mu HEAD,但這要求沒有未暫存的更改,我需要保留這些未暫存的更改,並且無法提交它們或暫存它們或任何東西,因為我沒有索引(並且考慮到所有“已刪除”文件,也需要很長時間才能檢查它們,以便git 意識到它們不在目錄中時可以再次刪除它們)結帳稀疏)。

如果我願意丟失本地更改,我可以調用git read-tree -m --reset HEAD,這有效。但由於目標是保留我未提交的更改,這還不夠。

答案1

到目前為止,我發現的最佳解決方案是將所有更改移至臨時位置,運行git read-tree -mu HEAD,然後刪除 git 創建的所有檔案並用原始更改替換它們。

這確實意味著等待 git 重新創建所有稀疏簽出文件,但至少我不必等待它在存儲庫中創建我不想簽出的所有其他文件(這往往是很多更長)。

相關內容