在引入.gitignore文件之前,整个BUNCH文件都已 checkin git repo。我目前正在尝试使用以下方法进行清理:
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
.......
我需要摆脱整个lotta文件中的整个LOTTA空间。
我正在寻找一种优雅的方式:
Assets/Aoi\ Character Pack/Viewer/Resources/Aoi/Viewer\ BackGrounds/bg18.png.meta
-或者-
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'`
我得到-错误:未知开关`\'
我期望管道发生什么不正常的地方。
最佳答案
规范的方式:
git ls-files -z | xargs -0 git rm
其他方式:
git ls-files | xargs -d '\n' git rm
关于git ls-files,如何在文件路径中转义空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35326218/