有一些我們想要忽略的文件,而不是由git跟蹤,我們無法弄清楚如何做到這一點。git如何配置爲忽略文件?
我們有一些第三方的C
圖書館是解壓縮的,我們在Git中有它。但是,當你configure && make
它,它會產生許多新的文件。如何編寫.gitignore
來跟蹤源文件,而不是新的東西。 (它不像禁止*.o
)
編輯:至少有12個文件類型。所以我們不想枚舉,我們想要哪種類型,哪種不需要。
有一些我們想要忽略的文件,而不是由git跟蹤,我們無法弄清楚如何做到這一點。git如何配置爲忽略文件?
我們有一些第三方的C
圖書館是解壓縮的,我們在Git中有它。但是,當你configure && make
它,它會產生許多新的文件。如何編寫.gitignore
來跟蹤源文件,而不是新的東西。 (它不像禁止*.o
)
編輯:至少有12個文件類型。所以我們不想枚舉,我們想要哪種類型,哪種不需要。
明確指定哪些文件應該被跟蹤,並忽略所有其他人可能是一個解決辦法。*
說:不顧一切和後續行指定的文件和目錄應該不忽視。允許使用通配符。
*
!filename
!*.extension
!directory/
!/file_in_root_directory
!/directory_in_root_directory
記住順序的問題。在年底把*
讓以前所有的線是無效的。
看看man gitignore(5)並搜索!
。它說
模式具有以下格式:
(...)
可選前綴!否定該模式;任何先前模式排除的匹配文件將再次包含在內。如果否定模式匹配,這將覆蓋較低優先模式源。
請將「示例」複製到帖子中。如果鏈接死亡 - 這個答案是沒用的。 – drozzy
我不知道爲什麼你說「它不是像禁止*.o
」,但我覺得你的意思是,有沒有您可以識別應用到生成的文件,但沒有任何好的模式源文件?如果只是出現幾件事情(比如在Linux上通常沒有任何擴展的單個可執行文件),則可以在.gitignore
中明確指定它們,所以它們不是問題。
如果確實有很多很多的文件是由構建過程生成的,它們與源文件共享擴展名和其他模式,那麼只需使用包含源文件的模式即可。如果真的那麼糟糕,你甚至可以把*
放在.gitignore
。這意味着當您鍵入git status
時,不會顯示新文件,或者在使用git add .
時添加文件,但它不會損害已添加到存儲庫的任何文件; git仍然會告訴你有關他們的更改,並在你使用git add .
時提取它們。它只會讓你明確開始跟蹤你所關心的文件更多的負擔。
我會確保回購清潔(沒有更改,沒有未跟蹤的文件),運行configure && make
,然後將新的未跟蹤的字段放入忽略文件。像git status --porcelain | fgrep '??' | cut -c4-
這樣的東西會自動拉出來,但它是值得一些眼球的時間,以確保是正確的...
然後你想如何讓git知道你想要什麼文件,你不?你知道,它無法讀懂你的想法... –
它是*完全好*有一個30行.gitignore。 – Cascabel
如果你真的會在你問的時候忽略所有新事物,那麼它很容易在腳中拍攝自己,並忘記跟蹤某些事物。明確指定要忽略的文件的唯一代價是所有12個文件,gitignore將會延長11行。你永遠不會看它。你會寫12行代碼來正確解決問題,不是嗎? – Cascabel