2

我正在尝试从带有git's的提交中删除文件中所有带有注释的行filter。相关.git/config文件如下所示:

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

我想用反斜杠转义斜杠,我可以看到该sed命令格式正确,因为它在 shell 中工作。但是在 git 中,它不会解析配置并且在任何命令上都会失败,例如git status

fatal: bad config file line 14 in .git/config
4

1 回答 1

0

我想你必须双转义反斜杠,但不确定,那是因为从文件读取并稍后执行它的双重解析。不会直接从外壳发生的问题。该指令将是: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

于 2013-07-16T22:20:45.577 回答