Git

刪除 .gitignore 中提到的任何文件

  • March 16, 2021

我在文件中有以下條目,.gitignore我想刪除它們。原因是因為這些文件是在 TeX 編譯期間創建的臨時垃圾文件,我希望能夠刪除它們。

我怎麼能這樣做?

git clean -Xdf

使用大寫-Xgit clean 刪除匹配的文件.gitignore

使用-d,git clean也會刪除匹配的整個目錄.gitignore

使用-f,git clean實際上會刪除內容而不是警告您。不過要小心。可能還有其他原因(例如個人direnv配置).gitignored,因此請確保始終了解此命令在執行之前將執行的操作。

特別感謝@Kusalananda 的分享git clean


作為替代方案,如果您有一個包含符號連結目錄的依賴項文件夾,並且您不想git clean遞歸刪除這些目錄中的所有內容*,*則可以使用這種更長的形式:

git ls-files --others --ignored --exclude-standard --directory | head -c -1 | tr '\n' '\0' | xargs -0 -r rm -r

git ls-files使用這些選項列出與 相同的目錄git clean -Xdn,但更具機器可讀性。

head -c -1修剪尾隨換行字節。

tr '\n' '\0'將所有換行符轉換為NULs。

xargs -0 -r rm -r刪除文件和目錄。-0使NUL分隔符。-r導致它跳過空輸入(警告:這是一個不可移植的 GNU 擴展)。

git clean -X -f -n

git clean -X將刪除與.gitignore. 最後-n導致它實際上不刪除文件,只是空執行,報告被刪除的文件。

添加-d以刪除被忽略的目錄。

沒有-X,它會刪除未跟踪的文件(但不是忽略的文件)。

git clean --help

引用自:https://unix.stackexchange.com/questions/435960