如何让.gitignore(或git本身)忽略包含#TODO的行

如何让.gitignore(或git本身)忽略包含#TODO的行,git,Git,我有很多带有#TODO的行供将来参考。这些都是个人的,我不希望在进行更改时将它们与文件的其余部分一起提交 有没有办法告诉.gitignore(或git本身)不要包含任何包含#TODO 或者作为奖金。。不仅仅是这一行,还可能是从#TODO到这一行的末尾,以防我在同一行上有一个TODO 例如: def destroy # TODO Alter route (Tell git to ignore this) @comment.destroy end 或: 不,gitignore用于忽略文件,

我有很多带有
#TODO
的行供将来参考。这些都是个人的,我不希望在进行更改时将它们与文件的其余部分一起提交

有没有办法告诉.gitignore(或git本身)不要包含任何包含
#TODO

或者作为奖金。。不仅仅是这一行,还可能是从
#TODO
到这一行的末尾,以防我在同一行上有一个
TODO

例如:

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


不,gitignore用于忽略文件,而不是行

您所能做的最好是使用提交钩子(检查
pre-commit
hook at),它可以删除这样的行


这可以使用sed/awk和一些正则表达式来实现,例如,您可以使用“干净”过滤器。它在文件暂存之前运行

首先,定义要使用过滤器的文件类型,并将其放入
.gittributes
文件中:

*.rb filter=removetodo
然后,调整配置,以便告诉git“removetodo”过滤器在clean上应该做什么:

git config filter.removetodo.clean "sed '/TODO/d'"
sed命令取自

然后,当您执行git添加时,git将在不影响您的工作区域的情况下,从.rb文件中无声地删除包含单词TODO的每一行


缺点是,如果您意外地合并了任何涉及这些文件的更改,您将丢失所有待办事项。

您想删除这些行还是禁用推送?难道你不想记录你的ToDOS,所以后来你知道WTF被破坏了(回答:因为你从来没有实现ToDo)。在一个合并中丢失的ToDOS是值得考虑的,幸运的是,我工作的分支是由我和我单独工作的,并且只是我自己的笔记,而不是非常重要的。任何重要的东西都可能记录在别处。太好了!您知道如何将其从git status的changed files列表中排除吗?@Ctrl-C我认为这是不可能的,请参阅
git config filter.removetodo.clean "sed '/TODO/d'"