我有很多行# TODO
供将来参考。这些是个人的,我不想在进行更改时将它们与我的文件的其余部分一起提交。
有没有办法告诉.gitignore(或git本身)不包含任何包含# TODO
或作为奖励..不仅仅是行,而是可能从# TODO
到行尾,我在同一行有一个TODO
就有代码
实施例
def destroy
# TODO Alter route (Tell git to ignore this)
@comment.destroy
end
或者:
def destroy
@comment.destroy # TODO Alter this line. (Tell git to ignore from '# TODO' onwards.
end
答案 0 :(得分:7)
您可以使用“干净”过滤器。它在文件暂存之前运行。
首先,定义要使用过滤器的文件类型,并将它们放在.gitattributes
文件中:
*.rb filter=removetodo
然后,调整你的配置,以便你告诉git“removetodo”过滤器应该做什么干净:
git config filter.removetodo.clean "sed '/TODO/d'"
取自Delete lines in a text file that containing a specific string
的sed命令然后,当你进行git add时,git会默默地从.rb文件中删除包含单词TODO的每一行,而不会影响你的工作区域。
缺点是,如果您不小心合并了任何触及这些文件的更改,您将失去所有TODO。
答案 1 :(得分:4)
不,gitignore用于忽略文件,而不是行。
你能做的最好的事情是使用一个提交钩子(检查https://git-scm.com/book/it/v2/Customizing-Git-Git-Hooks上的pre-commit
钩子)它可以删除这些线。
这可以使用sed / awk和一些正则表达式来实现,例如