有些時候,你必須把某些文件放到Git工做目錄中,但又不能提交它們,好比保存了數據庫密碼的配置文件啦,等等,每次git status
都會顯示Untracked files ...
,有強迫症的童鞋內心確定不爽。git
好在Git考慮到了你們的感覺,這個問題解決起來也很簡單,在Git工做區的根目錄下建立一個特殊的.gitignore
文件,而後把要忽略的文件名填進去,Git就會自動忽略這些文件。github
不須要從頭寫.gitignore
文件,GitHub已經爲咱們準備了各類配置文件,只須要組合一下就可使用了。全部配置文件能夠直接在線瀏覽:https://github.com/github/gitignore正則表達式
忽略文件的原則是:shell
.class
文件;舉個例子:數據庫
假設你在Windows下進行Python開發,Windows會自動在有圖片的目錄下生成隱藏的縮略圖文件,若是有自定義目錄,目錄下就會有Desktop.ini
文件,所以你須要忽略Windows自動生成的垃圾文件:vim
# Windows: Thumbs.db ehthumbs.db Desktop.ini
而後,繼續忽略Python編譯產生的.pyc
、.pyo
、dist
等文件或目錄:app
# Python: *.py[cod] *.so *.egg *.egg-info dist build
加上你本身定義的文件,最終獲得一個完整的.gitignore
文件,內容以下:編輯器
# Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa
最後一步就是把.gitignore
也提交到Git,就完成了!固然檢驗.gitignore
的標準是git status
命令是否是說working directory clean
。ui
使用Windows的童鞋注意了,若是你在資源管理器裏新建一個.gitignore
文件,它會很是弱智地提示你必須輸入文件名,可是在文本編輯器裏「保存」或者「另存爲」就能夠把文件保存爲.gitignore
了。spa
有些時候,你想添加一個文件到Git,但發現添加不了,緣由是這個文件被.gitignore
忽略了:
$ git add App.class The following paths are ignored by one of your .gitignore files: App.class Use -f if you really want to add them.
若是你確實想添加該文件,能夠用-f
強制添加到Git:
$ git add -f App.class
或者你發現,多是.gitignore
寫得有問題,須要找出來到底哪一個規則寫錯了,能夠用git check-ignore
命令檢查:
$ git check-ignore -v App.class .gitignore:3:*.class App.class
Git會告訴咱們,.gitignore
的第3行規則忽略了該文件,因而咱們就能夠知道應該修訂哪一個規則。
忽略某些文件時,須要編寫.gitignore
;
.gitignore
文件自己要放到版本庫裏,而且能夠對.gitignore
作版本管理!
在工程實現過程當中,會生成一些中間文件,或者在項目中的部分文件是不須要進行版本管理的。對於這些文件應該對於Github來說是透明的。Github提供這種功能,能夠本身指定哪些文件能夠不被管理。具體方法是在版本管理的根目錄下(與.git文件夾同級)建立一個 .gitignore(gitignore是隱藏文件,因此前面有個點)
gitignore - Specifies intentionally untracked files to ignore
項目中有clist.h clist.c main.c三個文件,編譯執行後,生成了三個文件 clist.o main.o main(執行文件)。這三個文件是不須要進行版本管理的,因此須要忽略這些文件,使用 git stauts查看後,發現這三個文件也是處於 Untracked files狀態。而實際上咱們是想忽略他。
使用gitignore文件來解決這個問題,步驟是:
[plain] view plain copy
文件.gitignore的格式規範:
A:#爲註釋
B:可使用shell所使用的正則表達式來進行模式匹配
C:匹配模式最後跟"/"說明要忽略的是目錄
D:使用!取反(例如目錄中包含 test.a,而且gitignore文件中包含 *.[oa],若是在文件中加入 !test.a 代表忽略除test.a文件之外的後綴名爲.a或者.o的文件)
配置完.gitignore文件後,執行git status命令,會發現那三個文件再也不是Untracked files了,也就完成了忽略指定文件的功能。