2016-11-24 57 views
1

我有很多行# TODO供将来参考。这些都是个人的,当我进行更改时,我不想将它们与我的文件的其余部分一起提交。我该如何告诉.gitignore(或git本身)忽略包含#TODO的行

有没有办法告诉的.gitignore(或自身的git)不包括含任何线# TODO

或者作为奖励,它不只是行了,但也许从# TODO到行的末尾柜面我对在同一线路TODO有代码

例:

def destroy 
    # TODO Alter route (Tell git to ignore this) 
    @comment.destroy 
end 

OR:

def destroy 
    @comment.destroy # TODO Alter this line. (Tell git to ignore from '# TODO' onwards. 
end 
+0

你想删除行或禁用推?难道你不想记录你的TODO,以便以后,你知道wtf这是捣毁(答案:因为你从来没有实施待办事项) – court3nay

回答

5

你可以使用一个“干净”的过滤一些正则表达式来完成。它在文件被执行之前运行。

首先,定义要使用的过滤器的文件类型,并把它们放在你的.gitattributes文件:

*.rb filter=removetodo 

然后,让你告诉git的调整你的配置是什么“removetodo”过滤器应该在清洁做的事:从Delete lines in a text file that containing a specific string

然后采取

git config filter.removetodo.clean "sed '/TODO/d'" 

sed命令,当你做一个git的添加,Git会默默地REM在你的.rb文件中包含TODO一词的每一行都不会影响你的工作区域。

不利的一面是,如果您意外地合并任何触摸这些文件的更改,您将会丢失所有TODO。

+0

合并丢失的TODOS是值得考虑的事情,幸运的是,我工作的分支是单靠我和我一起工作,对我来说更多的只是笔记,并不是那么重要。任何重要的事情都可能记录在别处。 – Antonio

+0

太棒了!任何想法如何也从'Git状态'中的更改文件列表中排除它? –

+1

@ Ctrl-C我不认为这是可能的,请参阅http://stackoverflow.com/a/19809121/1615903 – 1615903