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

Ant*_*nio 2 git

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

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

或作为奖励..不仅仅是行,但也许从行# TODO到行尾我有一个TODO在同一行有代码

例:

def destroy
  # TODO Alter route (Tell git to ignore this)
  @comment.destroy
end
Run Code Online (Sandbox Code Playgroud)

要么:

def destroy
  @comment.destroy # TODO Alter this line. (Tell git to ignore from '# TODO' onwards.
end
Run Code Online (Sandbox Code Playgroud)

161*_*903 7

你可以使用'干净'过滤器.它在文件暂存之前运行.

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

*.rb filter=removetodo
Run Code Online (Sandbox Code Playgroud)

然后,调整你的配置,以便告诉git"removetodo"过滤器应该对clean做什么:

git config filter.removetodo.clean "sed '/TODO/d'"
Run Code Online (Sandbox Code Playgroud)

sed命令取自包含特定字符串的文本文件中的删除行

然后,当你进行git add时,git会默默地从.rb文件中删除包含单词TODO的每一行,而不会影响你的工作区域.

缺点是,如果您不小心合并了任何触摸这些文件的更改,您将丢失所有TODO.