2013-07-16 11 views
2

我試圖從gitfilter提交中刪除文件中所有帶有註釋的行。關注.git/config文件看起來像這樣:如何在git過濾器中跳轉斜線

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

我想逃離反斜槓斜線,我可以看到,是國內形成sed命令,因爲它在外殼。但這裏在Git中,它不會解析配置和類似git status與失敗在任何命令:

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

回答

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命令刪除了帶雙斜槓的兩行。