2017-09-18 16 views
1

昨日、私のgit repoの問題をデバッグするのにgit reset HEAD --hardで修正されていなかった問題を引き起こしたファイルが.gitignoreで無視されてしまったので、無視されているすべてのファイルのgit repoを "フラッシュ"または "クリーン"する方法があるので、gitで追跡されたファイルだけが存在しますか?gitリポジトリからすべての無視されたファイルを削除する方法はありますか?

私は最後にリポジトリを削除してgithubから再度クローンすることで問題を解決しましたが、将来問題のある可能性のあるファイル(無視されているファイル)をすべてすぐに削除したいと思います。

+1

['git clean'](https://git-scm.com/docs/git-clean)で遊んでみてください – Ferrybig

答えて

2
git clean -dfX 

のgit - クリーン - 実際には行われることになるかを示す、何も削除しないでください強制的に
-nを削除するディレクトリ
-fを除去するための作業ツリー
-dから人跡未踏のファイルを削除します。
-X Gitで無視されたファイルのみを削除します。これは、最初からすべてを再構築するのに便利ですが、手動で作成したファイルを保持してください。

+1

Inを削除してください私のケースでは、リポジトリがコンポーザーを使ってプロジェクトを構築するように設定されているため、 '-x'フラグも追加する必要がありました。 '-df'だけでも削除するものは何も与えられませんでした。 –

+0

@PatrickKennyそれは答えです –

1

単一のコマンド・ソリューションがあります:

git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached 

それは何がある:

  • 一覧すべて失敗
  • コールのgitのrmを避けるために、ファイルにスペースを
  • ハンドルパスを無視 - r --cachedは、無視されたすべてのファイルをインデックスから削除しません(ローカルマシンから削除しないで)
+0

ローカルマシンからも削除したい場合は--cached –

関連する問題