4

チームの誰かが最初にプロジェクトに.gitignoreを追加せずに、最初のコミットをプッシュするというシナリオに遭遇し続けています。これにより、追跡したくない大量のファイルがリポジトリに格納されます。

git ls-files -i --exclude-from=.gitignore
.gitignoreによって無視されるファイルのリストが表示されます

git rm --cached <file>
リポジトリから一度に1つずつファイルを削除できますが、それらは作業ディレクトリ(必要なもの)に保持されます。

ファイルリストをからls-filesにパイプする方法はありますrm --cached か(または、追跡され無視されたファイルをリポジトリから削除できるようにする他の方法)?

私たちのチームメンバーの1人が、正規表現を使用してそれを行うシェルスクリプトを作成しましたが、私はコマンドラインのみのソリューションを探しています(存在する場合)。

4

1 に答える 1

5

あなたが試すことができます:

git rm --cached $(git ls-files -i --exclude-from=.gitignore)

(「 gitは削除されたファイルを削除します」、「git:バニラrmを介して行われた削除を追加/コミットする方法」、または「Gitリポジトリから複数のファイルを削除する」で削除されたファイルに対して機能するものと同じ考えに従います。すでにディスクから削除されています")。

または:単純なパイプでも機能する可能性があります:

git ls-files -i --exclude-from=.gitignore | xargs -0 git rm --cached
于 2012-08-03T16:46:52.257 に答える