Git

剝離所有應該被忽略的已送出文件的 git repo

  • October 30, 2018

我最近啟動了一個 git repo 並忘記添加一個.gitignore文件。在我最初的送出之後,我的 repo 有許多子目錄和許多應該被忽略的文件。有沒有一種有效的方法來添加一個.gitignore然後推送儲存庫,而無需將文件忽略到 GitLab 或 GitHub 等工具?

如果您不介意刪除工作目錄中所有被忽略的文件,以下將暫存所有已送出但被忽略的文件以進行刪除:

find . -print0 | git check-ignore -z --stdin --no-index | xargs -0 git rm -f -r --cached --ignore-unmatch --

(假設 GNUfind和一個足夠新gitgit check-ignore)。它還將刪除任何其他被忽略的文件或目錄。

這列出了從目前目錄開始的所有文件和目錄,檢查它們是否被忽略(即使它們已送出),並刪除它們,無論它們是否已送出、未跟踪等。

這適用.gitignore於樹中的任何文件(甚至您的git配置中的其他地方)。

通過送出更改並推送它們來跟進;由於更改是新送出,因此您無需強制推送任何內容。重寫歷史記錄以刪除對所謂被忽略文件的所有引用是一項稍微複雜的任務。

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