git .gitignore 忽略

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

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

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

忽略文件的原則是:編輯器

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

舉個例子:測試

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

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

而後,繼續忽略Python編譯產生的.pyc.pyodist等文件或目錄:spa

# 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」。code

使用Windows的童鞋注意了,若是你在資源管理器裏新建一個.gitignore文件,它會很是弱智地提示你必須輸入文件名,可是在文本編輯器裏「保存」或者「另存爲」就能夠把文件保存爲.gitignore了。server

小結

  1. 忽略某些文件時,須要編寫.gitignore
  2. .gitignore文件自己要放到版本庫裏,而且能夠對.gitignore作版本管理!
  3. 從版本庫中刪除
    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"

忽略文件夾寫法

經測試發現,若要忽略一個文件夾下的部分文件夾,應該一個一個的標示。可能有更好的方法。
若test下有多個文件和文件夾。若要ignore某些文件夾,應該這個配置.gitignore文件。若test下有test1,test2,test3文件。要track test3,則.gitignore文件爲:
test/test1
test/test2
!test/test3
若爲:
test/
!test/test3 ,則不能track test3。
Git 中的文件忽略
1. 共享式忽略新建 .gitignore 文件,放在工程目錄任意位置便可。.gitignore 文件能夠忽略本身。忽略的文件,只針對未跟蹤文件有效,對已加入版本庫的文件無效。
2. 獨享式忽略針對具體版本庫 :.git/info/exclude針對本地全局:  git config --global core.excludefile ~/.gitignore
忽略的語法規則:
(#)表示註釋
(*)  表示任意多個字符; 
(?) 表明一個字符;
 ([abc]) 表明可選字符範圍
若是名稱最前面是路徑分隔符 (/) ,表示忽略的該文件在此目錄下。
若是名稱的最後面是 (/) ,表示忽略整個目錄,但同名文件不忽略。
經過在名稱前面加 (!) ,表明不忽略。
例子以下:
# 這行是註釋
*.a                   # 忽略全部 .a 偉擴展名的文件
!lib.a                # 可是 lib.a 不忽略,即時以前設置了忽略全部的 .a
/TODO            # 只忽略此目錄下 TODO 文件,子目錄的 TODO 不忽略 
build/               # 忽略全部的 build/ 目錄下文件
doc/*.txt           # 忽略如 doc/notes.txt, 可是不忽略如 doc/server/arch.txt
相關文章
相關標籤/搜索