簡體   English   中英

使用 NodeGit 在存儲庫中執行 `git clean`

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM