如何在git过滤器中转义斜杠

时间:2013-07-16 17:01:18

标签: git sed

我正在尝试使用git的{​​{1}}从提交中删除包含评论的所有行。有关的filter文件如下所示:

.git/config

我想用反斜杠转义斜杠,我可以看到[filter "printlnignore"] clean = sed '/\/\//d' smudge = cat 命令格式正确,因为它在shell中工作。但是在git中,它不会解析配置并且在sed之类的任何命令上失败:

git status

1 个答案:

答案 0 :(得分:0)

我想,你必须双重转义反斜杠,但不确定,这是因为从文件中读取并稍后执行它的双重解析。不直接从shell发生的问题。说明将是:clean = sed '/\\/\\// d'

我在Linux工作,但我做了一个测试并且工作了,看到它:

mkdir myproject
cd myproject
git init
echo -e "line one\n//line two\nline//three\nline four" > file.txt
echo -e "*.txt filter=myfilter" >> .git/info/attributes
vim .git/config
cat .git/config

产量:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true

[filter "myfilter"]
        clean = sed '/\\/\\// d'
        smudge = cat

继续测试:

git add .
git commit -m "First commit"
rm file.txt
git checkout file.txt
cat file.txt

产量:

line one
line four

使用sed命令删除了带有双斜杠的两行。