私のファイルには次の項目がありますが、.gitignore
削除したいと思います。これは、これらのファイルがTeXコンパイル中に作成された一時的なジャンクファイルであり、削除できるようにしたいからです。
どうすればいいですか?
答え1
git clean -Xdf
資本として-X
、git 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'
すべての改行文字をNUL
sに変換します。
xargs -0 -r rm -r
ファイルとディレクトリを削除します。区切り文字を-0
作成しますNUL
。-r
空の入力をスキップします(警告:これは移植できないGNU拡張です)。
答え2
git clean -X -f -n
git clean -X
.gitignore
として削除する-n
と、ファイルは削除されず、テスト実行のみが実行され、ファイルが報告されます。会議削除されました。
-d
無視されたディレクトリも削除するために追加されました。
それ以外の場合は、-X
追跡されていないファイルを削除します(無視されたファイルは削除しません)。
望むよりgit clean --help
。
答え3
あなたの場合、ファイルエントリが.gitignore
次から始まらない場合は、!
次の行が機能します。
while read -r entry;do rm -rf ${entry}; done < .gitignore