在提交之前git可以过滤掉某些行吗?

时间:2015-06-19 19:05:04

标签: git github commit gitignore git-commit

我在github上有一个我正在处理的回购,我经常对我的.py文件发表评论,这些文件以" # TODO:"开头。保持个人记录要做的事情。

# TODO: do this <code>

我显然不希望这样做。

我希望GitHub在我即将提交时搜索所有文件,而不包括以# TODO:开头的行

Git已经这样做了吗?我知道像perforce这样的某些版本控制已经具备此功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

我希望GitHub在我即将提交时搜索所有文件,而不包括以# TODO:开头的行

GitHub(服务器端)不会这样做。

但是,您可以在当地的回购邮件中注册一个 content filter driver ,这将在git commitlike a sed '/^# TODO:/ d')上为您执行此操作。

http://i.stack.imgur.com/EQiwd.png

(图片显示在“Customizing Git - Git Attributes”中,来自“Pro Git book”)

'clean' filter可以过滤掉这些行(我不会讨论是否应该留下它们),并且该过滤器将自动应用于git commit。 这显然会删除所有 TODO,包括其他人遗留的 convert,因此请小心处理:技术上可能,但您必须确定是否需要/在您的情况下有用。

2016年2月更新:使用git 2.8,即使你已经定义了一个git内容过滤器,你也可以在没有的情况下准时添加,如果需要,可以应用clean过滤器:

commit 1a8630dLars Schneider (larsxschneider)(2016年1月29日) (由Junio C Hamano -- gitster --合并于commit a3764e7,2016年2月10日)

  

cat:将清空/污迹过滤器的空字符串视为“git -c filter.myFilter.clean= add test.disable ^^ (empty value)

X509Store