filter-branch命令中的变量重新分配

时间:2014-06-03 21:49:14

标签: git bash git-filter-branch

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,所以我想有很多人能够不经修改就能使它工作。我错过了什么?

  • 32位cygwin 1.7.30
  • git(cygwin)1.7.9
  • bash(cygwin)4.1.10

0 个答案:

没有答案