2010-10-27 69 views
31

我試圖實施Git來管理創意資產(Photoshop,Illustrator,Maya等),並且我想根據文件大小而不是擴展名,位置等排除文件。gitignore按文件大小?

例如,我不想排除所有的.avi文件,但是我不想提交的隨機目錄中有一些大量的+ 1GB avi文件。

有什麼建議嗎?

+1

我會警告說Git的大型二進制文件的性能很差,而這個問題現在纔剛剛得到解決。除了純文本之外,我建議不要使用Git。 – erjiang 2010-10-27 17:11:31

+0

@erjiang:同意。 (除了小的二進制文件是非常好的;當然,它們不能被精確地分散,但沒有VCS可以做到這一點)當然,OP是說他明確不想跟蹤大文件,所以它可能都沒問題! – Cascabel 2010-10-27 19:02:47

+2

當然沒有內置的方法來做到這一點。您可以通過添加一個預先提交鉤子來實現它,該鉤子會檢查所有要提交的文件的大小,並在任何超過閾值時中止。您可以添加額外的自動化,但要小心。你想要的最後一件事是通過不小心忽略重要內容而丟失數據。 (爲了增加危險性,您可以:自動取消大文件,自動將它們添加到gitignore,甚至繼續進行修改的提交而不是中止。) – Cascabel 2010-10-27 19:06:37

回答

31

我是新來的.gitignore,所以有可能是更好的方式來做到這一點,但我一直在使用不包括文件大小的文件:

find . -size +1G | cat >> .gitignore 

很明顯,你必須運行這段代碼如果您生成大量大文件,則經常發生。

+0

這是在部署以WordPress構建的大型網站時控制'wp-content/uploads'文件夾的好方法。謝謝你。 – 2014-05-31 20:05:34

+3

我發現我需要從gitignore工作之前的每個文件的開頭刪除前導的'。/' – IanB 2014-07-10 04:19:48

+1

這是一個非常古老的線程,但萬一有人偶然發現並需要一個可以解決的解決方案:'find。 - 大小+ 1G | sed's |^\ ./ || g'| cat >> .gitignore' – antass 2016-10-20 15:37:02