11

.gitignore ファイルを導入する前に、大量のファイル全体が git リポジトリにチェックインされていました。現在、次の方法でクリーンアップしようとしています。

git rm --cached `git ls-files -i --exclude-from=.gitignore`

問題は、多くのファイル パスにスペースが含まれていることです。

例えば:

......
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg12.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg13.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg14.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg15.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg16.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg17.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg18.png.meta
.......

大量のファイルに大量のスペースがあり、それを取り除く必要があります。

私は次のいずれかのエレガントな方法を探しています:

  • A: たとえば、「\」でスペースをエスケープします。

    Assets/Aoi\ Character Pack/Viewer/Resources/Aoi/Viewer\ BackGrounds/bg18.png.meta

-また-

  • B:git ls-files引用符の間にきちんと収まっているすべてのファイルのリストを作成しました。

    'Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg18.png.meta'

-編集-

これまで私は試してきました git ls-files -i --exclude-from=.gitignore | sed 's/\ /\\\ /g'

それは、スペースがエスケープされた、期待どおりのファイルパスを喜んで出力しますが.....実行しようとすると

git rm --cached `git ls-files -i --exclude-from=.gitignore | sed 's/\ /\\\ /g'`

エラー: 不明なスイッチ `\' が表示されます

パイプで何かおかしなことが起こっていると思います。

4

2 に答える 2

13

標準的な方法:

git ls-files -z | xargs -0 git rm

別の方法:

git ls-files | xargs -d '\n' git rm
于 2016-02-11T01:28:30.197 に答える