GIT 忽略特殊文件

 


有些時候,你必須把某些文件放到Git工做目錄中,但又不能提交它們,好比保存了數據庫密碼的配置文件啦,等等,每次git status都會顯示Untracked files ...,有強迫症的童鞋內心確定不爽。git

好在Git考慮到了你們的感覺,這個問題解決起來也很簡單,在Git工做區的根目錄下建立一個特殊的.gitignore文件,而後把要忽略的文件名填進去,Git就會自動忽略這些文件。github

不須要從頭寫.gitignore文件,GitHub已經爲咱們準備了各類配置文件,只須要組合一下就可使用了。全部配置文件能夠直接在線瀏覽:https://github.com/github/gitignore正則表達式

忽略文件的原則是:shell

  1. 忽略操做系統自動生成的文件,好比縮略圖等;
  2. 忽略編譯生成的中間文件、可執行文件等,也就是若是一個文件是經過另外一個文件自動生成的,那自動生成的文件就不必放進版本庫,好比Java編譯產生的.class文件;
  3. 忽略你本身的帶有敏感信息的配置文件,好比存放口令的配置文件。

舉個例子:數據庫

假設你在Windows下進行Python開發,Windows會自動在有圖片的目錄下生成隱藏的縮略圖文件,若是有自定義目錄,目錄下就會有Desktop.ini文件,所以你須要忽略Windows自動生成的垃圾文件:vim

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

而後,繼續忽略Python編譯產生的.pyc.pyodist等文件或目錄: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 cleanui

使用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作版本管理!

 

 

1).gitignore介紹

 在工程實現過程當中,會生成一些中間文件,或者在項目中的部分文件是不須要進行版本管理的。對於這些文件應該對於Github來說是透明的。Github提供這種功能,能夠本身指定哪些文件能夠不被管理。具體方法是在版本管理的根目錄下(與.git文件夾同級)建立一個  .gitignore(gitignore是隱藏文件,因此前面有個點)

                               gitignore - Specifies intentionally untracked files to ignore

 

(2)應用實例

          項目中有clist.h clist.c  main.c三個文件,編譯執行後,生成了三個文件  clist.o  main.o   main(執行文件)。這三個文件是不須要進行版本管理的,因此須要忽略這些文件,使用 git  stauts查看後,發現這三個文件也是處於 Untracked files狀態。而實際上咱們是想忽略他。

 

使用gitignore文件來解決這個問題,步驟是:

 

[plain] view plain copy

  1. S1:      touch  .gitignore     #建立gitignore隱藏文件  
  2. S2:      vim    .gitignore     #編輯文件,加入指定文件  
  3.          #下面是個人gitignore文件的內容  
  4.          #忽略gitignore文件  
  5.          .gitignore  
  6.          #忽略後綴名爲.o和.a的文件  
  7.          *.[oa]  
  8.          #顯示指定忽略名稱爲main的文件  
  9.          main  

 

 

文件.gitignore的格式規範:
A:#爲註釋   
B:可使用shell所使用的正則表達式來進行模式匹配   
C:匹配模式最後跟"/"說明要忽略的是目錄 
D:使用!取反(例如目錄中包含  test.a,而且gitignore文件中包含  *.[oa],若是在文件中加入 !test.a   代表忽略除test.a文件之外的後綴名爲.a或者.o的文件)

配置完.gitignore文件後,執行git status命令,會發現那三個文件再也不是Untracked files了,也就完成了忽略指定文件的功能。
 

相關文章
相關標籤/搜索