我正在尝试使用git
的{{1}}从提交中删除包含评论的所有行。有关的filter
文件如下所示:
.git/config
我想用反斜杠转义斜杠,我可以看到[filter "printlnignore"]
clean = sed '/\/\//d'
smudge = cat
命令格式正确,因为它在shell中工作。但是在git中,它不会解析配置并且在sed
之类的任何命令上失败:
git status
答案 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
命令删除了带有双斜杠的两行。