[英]Perform a `git clean` in a repository using NodeGit
我有一個 NodeGit 存儲庫repo
。 此存儲庫在已跟蹤和未跟蹤的文件和目錄中都有一些本地更改。 如何清理此存儲庫,其效果與git clean -f -d
命令相同,以便之后本地更改不再存在?
謝謝您的幫助。
NodeGit 是 libgit2 的一個包裝器,它是一個較低級別的庫。 它的設計目的不是像大多數 Git 命令那樣處理大量復雜的任務,因此沒有內置的清理技術。 這不僅僅是 NodeGit:libgit2 也缺少任何內置的清理功能。
然而,它是可能實現的,盡管有一些困難。 libgit2 提供了一種獲取文件狀態的方法,您可以包含未跟蹤的文件並遞歸到被忽略的目錄中。 未跟蹤的文件將在工作樹中標記為新文件,但沒有為它們設置任何索引標志。 然后可以刪除它們。
這並不能解決清理空目錄的問題,因此您必須手動跟蹤哪些目錄有未跟蹤的文件,然后在事后通過 go 確定目錄是否為空,如果是,請將其刪除。 如果您還想刪除空目錄,那么您必須自己動手,因為狀態代碼不枚舉目錄,只枚舉文件。
如果這看起來工作量很大,那么,確實如此。 git clean
在引擎蓋下做了相當多的工作,因此手工操作必然很復雜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.