2016-11-24 60 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