git-filter-branch的文档提供了以下代码段:
git filter-branch --index-filter \
'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
但在运行它时,我总是收到以下错误:
mv: cannot stat `/repo/.git-rewrite/t/../index.new': No such file or directory
我假设git-update-index
引用变量GIT_INDEX_FILE
来获取索引文件的位置。如果是这样,似乎该片段期望shell能够做到这样的事情:
env | MYVAR="home" grep -i $(eval 'echo "$MYVAR"')
在我的终端中无法正常工作(如预期的那样?)换句话说,赋值MYVAR=home
似乎对后续命令没有影响。这是我可以通过shell选项或通过修改片段来解决的问题吗?我已经看到这个片段在各个地方使用,包括SO,所以我想有很多人能够不经修改就能使它工作。我错过了什么?