經過前面的文章,我相信你們已經對 Git 有所掌握了,如今還剩下最後一個知識點,就是讓 Git 添加忽略某些文件。在實際的項目開發中,咱們可能不想將一些文件添加到 Git 倉庫中。好比,一些敏感文件、臨時文件、自動生成文件、日誌文件等。那應該怎麼操做呢?git
假設咱們想建立一個項目並使用 Git 進行管理,如今咱們有三個文件 A.md
、B.md
、C.md
,如今咱們不但願將 C.md
文件添加到倉庫中。可是 Git 會看到這些文件,因此在咱們運行 git status
命令時,它仍然會顯示在文件列表中:bash
下圖中的項目
GitTestProject
項目,已經經過git init
初始化過了。ide
那這個時候咱們應該怎麼辦呢?若是咱們想某個文件保留在項目中,又不想它受到 Git 的跟蹤管理,那咱們可使用文件 .gitignore
文件,咱們只須要建立該文件,而後並添加到咱們項目的根目錄中,最後把你想要忽略(讓 Git 不進行跟蹤)的文件名稱填寫到該文件中就能夠了。若是咱們要忽略 C.md
咱們能夠將這行添加到 .gitignore
文件中。學習
在 Mac 系統中不能直接建立
.gitignore
文件,咱們須要在當前項目的根目錄打開控制檯,並輸入touch .gitignore
來生成.gitignore
文件。gradle
C.md
複製代碼
這時咱們再使用 git status
來查看咱們的倉庫的狀態:ui
從上圖中,咱們能夠發現 C.md
文件已經再也不受 Git 控制了。由於 Git 會查看 .gitignore
文件中的內容,並根據該文件中的內容,自動忽略你想忽略的文件。idea
那既然 C.md
文件已經被忽略了,那麼咱們就能夠直接使用 git add .
來添加當前目錄的全部文件啦。spa
還記得以前章節中咱們學習的
git add
命令嗎?咱們可使用一個特殊的字符來表示當前目錄和全部的子目錄,而不是一個個的添加文件。還記得是什麼字符嗎?對就是.(點)
。日誌
雖然咱們能夠直接在 .gitignore
文件中直接書寫咱們要忽略的文件名稱,可是咱們也可使用 通配符
來忽略一系列知足條件的文件或文件夾。code
通配符容許你使用特殊的字符來表示某些格式/字符。在 .gitignore
文件中,咱們可使用:
#
: 將行標記爲註釋*
: 與 0 個或多個字符匹配?
:與 1 個字符匹配[abc]
: - 與 a、b 或 c 匹配**
: 與嵌套目錄匹配,好比 a/**/z 與如下項匹配
下面咱們來看一些簡單的例子來學習一下通配符的使用,好比咱們須要忽略當前項目根目下的 A
文件夾中的全部的 80 張 PNG
格式的圖片,咱們能夠在 .gitignore
文件中書寫:
/A/*.png
複製代碼
注意:Git 默認會忽略文件名的大小寫,咱們可以使用命令
git config --get core.ignorecase
來查看咱們的設置,固然咱們也能夠經過命令git config core.ignorecase false
將其置爲 false 。
如今咱們已經學會如何在 Git 中添加忽略文件了,可是在使用的過程當中,如下幾個問題咱們也是會經常碰見的。
有些時候,咱們想添加一個文件到倉庫中,可是咱們發現咱們添加不了,緣由是這個文件已經被添加到 .gitignore
文件中忽略了。好比結合上述例子,咱們想添加 C.md
文件,會有以下提示:
git add C.md
The following paths are ignored by one of your .gitignore files:
C.md
Use -f if you really want to add them.
複製代碼
若是咱們確實須要添加該文件,那麼咱們可使用 -f
選項來強制添加。
git add -f C.md
複製代碼
經過 -f
選項強制添加的文件,在後續的使用中與其餘正常被 Git 跟蹤的文件使用效果同樣。也就是說 C.md
文件將會受到 Git 的跟蹤管理。
若是你以爲 gitignore
中的忽略文件的書寫有誤,咱們也可使用 git check-ignore
來查看咱們的忽略文件的規則:
git check-ignore -v c.md
.gitignore:1:C.md c.md
複製代碼
關於該命令的更多介紹,能夠查看官方文檔git-check-ignore
仍是結合咱們上述的例子,在項目中,咱們忘記了在 .gitignore
文件中添加忽略文件 C.md
,直接使用了 gid add .
命令,將全部的文件都添加到了暫存區
中,以下所示:
那麼這個時候,咱們可使用 git rm --cached
命令,將 C.md
文件從暫存區中移除:
關於
git rm
命令的使用,能夠查看官方文檔git rm
git rm --cached C.md
複製代碼
這個時候,咱們在使用 git status
命令來倉庫咱們的倉庫的狀態,咱們會發現 C.md
文件已經從暫存區中移除了。
那麼接下來,咱們就能夠修改咱們的 .gitignore
文件,將 C.md
添加到該忽略文件中去了。
不只將文件添加到 Git 倉庫,還推送到遠程倉庫了。而且其餘合做的小夥伴已經從遠程倉庫拉取了更新。這個時候才發現某些文件須要忽略。
這種狀況下,若是咱們再將想忽略的文件添加到 .gitignore
文件中,已經徹底不起任何做用了。
那怎麼辦呢?咱們可使用另一個命令:
git update-index --assume-unchanged <file>
複製代碼
仍是以上文中的 C.md
爲例子,咱們能夠這樣:
git update-index --assume-unchanged C.md
複製代碼
使用該命令後,即便咱們修改了已經被跟蹤的 C.md
文件,Git 也會默認咱們沒有更改該文件。什麼意思呢?也就是咱們本地隨便修改該文件,Git 始終認爲它和原來的版本同樣。那麼在以後的項目開發中,就不會產生包含該文件的提交了。
一樣,咱們也能夠恢復對該文件的追蹤,咱們可使用命令:
git update-index --no-assume-unchanged <file>
複製代碼
關於該命令的使用,能夠查看官方文檔--no-assume-unchanged
經過閱讀本篇文章,相信小夥伴已經意識到了找準正確的時間,添加忽略文件是多麼的重要。這裏須要提醒第一次使用 Git 或其餘版本管理系統的小夥伴們。在建立倉庫時,必定要先處理忽略文件
,也就是你的 .gitignore
文件必定要在項目初始化完成後提交!!!! 由於後期再來處理忽略文件,就很是的麻煩與複雜。
因此在平時的項目中,必定要肯定本身項目中哪些文件到底應該被追蹤,哪些應該不被追蹤。以 Android 項目爲例:
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild
複製代碼
上述忽略文件是通常 Android 項目都會設置,由於這些都是一些配置文件、中間文件、項目配置文件等。固然不一樣的項目所須要配置的忽略文件並不相同,你們能夠結合自身的需求來配置。這裏就不具體講解其餘項目的忽略文件的配置了。
整個 Git 新手系列教程,到如今已經寫完了,雖然前先後後花費了一個月的時間,可是當本身完成後,卻忍不住的知足與自豪。不是本身漲了好多粉絲,而是爲本身能堅持作一件事而感到高興。給本身定一個小目標,一步一步實現的感受真好~