在引入.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

  • -或者-
  • 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'`
    

    我得到-错误:未知开关`\'

    我期望管道发生什么不正常的地方。

    最佳答案

    规范的方式:

    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/

    10-15 06:30
    查看更多