我有一个我的音乐文件的 git 存储库,我最近发现其中一些已被删除。 我想我不小心删除了它们,但是现在我只是短暂地 Revel 于我有先见之明的事实 使用 git repo,所以我当前的 git status 验证它们已被删除。以下是一些 list :
# deleted: Steve_Erquiaga-Cafe_Paradiso/03 - Arioso__J.S._Bach_.flac
# deleted: "Steve_Erquiaga-Cafe_Paradiso/04 - S\303\203\302\251r\303\203\302\251nade__Rachmaninov__from_Moreaux_de_fantasie.flac"
# deleted: "Steve_Erquiaga-Cafe_Paradiso/05 - After_a_Dream__Faure___Apr\303\203\302\250s_Une_R\303\203\302\252ve_.flac"
# deleted: Steve_Erquiaga-Cafe_Paradiso/06 - Prelude_in_C_Minor__J.S._Bach__from_The_Well-Tempered_Clavier.flac
# deleted: Steve_Erquiaga-Cafe_Paradiso/07 - If_Dreams_Could_Dance__Erquiaga_.flac
我已经通过以下方式恢复了一首名称中不包含特殊字符的歌曲:
$git checkout "copy/pasted-in_name_from the output above"
然而,某些名称中的特殊字符阻碍了我恢复它们的简单方法:
$git checkout 'Steve_Erquiaga-Cafe_Paradiso/05 - After_a_Dream__Faure___Apr\303\203\302\250s_Une_R\303\203\302\252ve_.flac'
错误:
pathspec 'Steve_Erquiaga-Cafe_Paradiso/05 - After_a_Dream_Faure__Apr\303\203\302\250s_Une_R\303\203\302\252ve_.flac' did not match any file(s) known to git.
我想这本身不是 git 问题,而是 shell 特殊字符转义或翻译问题。 我尝试将显示的名称用双引号引起来,但我得到了相同的消息。我还尝试使用外部双引号并在每个“内部双引号”前面加上反斜杠,获得相同类型的错误消息。
我如何构建一个可以使用这些文件名的 git checkout 命令?
最佳答案
您可以尝试使用 printf
,它可以理解 3 个字符的八进制转义,例如:
git checkout -- "$(printf "Steve_Erquiaga-Cafe_Paradiso/05 - After_a_Dream__Faure___Apr\303\203\302\250s_Une_R\303\203\302\252ve_.flac")"
恐怕我还没有测试过这个,但我认为它应该可以工作。
关于git - 如何在 git checkout 中使用八进制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8151820/