天講講Git中非常重要的一個文件——.gitignore。
作用:一般來說每個GIT項目中都需要一個“.gitignore”文件,這個文件的作用就是告訴GIT哪些文件不需要添加到版本管理中,比如Android項目中的iml文件及build目錄下面編譯生成的文件。
1、.gitignore文件的創(chuàng)建:首先要強調一點,這個文件的完整文件名就是“.gitignore”,注意最前面有個“.”。這樣沒有擴展名的文件在Windows下不太好創(chuàng)建,這里給出win7的創(chuàng)建方法:創(chuàng)建一個文件,文件名為:“.gitignore.”,注意前后都有一個點。保存之后系統(tǒng)會自動重命名為“.gitignore”。
2、過濾規(guī)則:
build/ :過濾整個文件夾;
*.class:過濾所有.class后綴的文件;
local.properties:過濾具體文件
被過濾掉的文件就不會出現(xiàn)在你的GitHub庫中了,當然本地庫中還有,只是push的時候不會上傳。
需要注意的是.gitignore還可以指定哪些文件添加到版本管理中,添加規(guī)則:
!build/ :添加整個文件夾;
!*.class:添加所有.class后綴的文件;
!local.properties:添加具體文件
唯一的區(qū)別就是前面加了個感嘆號
3.注意:如果你不慎在創(chuàng)建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規(guī)則,這些規(guī)則也不會起作用,Git仍然會對所有文件進行版本管理。
簡單來說出現(xiàn)這種問題的原因就是Git已經(jīng)開始管理這些文件了,所以你無法再通過過濾規(guī)則過濾它們。
所以大家一定要養(yǎng)成在項目開始就創(chuàng)建.gitignore文件的習慣,否則一單push,處理起來會非常麻煩。
4.示例:
Android的Module推薦這么寫.gitignore文件
/build
*.iml
Android的項目.gitignore文件推薦這么寫
# Built application files
*.apk
*.ap_
# Files for the Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
(1).gitignore介紹
在工程實現(xiàn)過程中,會生成一些中間文件,或者在項目中的部分文件是不需要進行版本管理的。對于這些文件應該對于Github來講是透明的。Github提供這種功能,可以自己指定哪些文件可以不被管理。具體方法是在版本管理的根目錄下(與.git文件夾同級)創(chuàng)建一個 .gitignore(gitignore是隱藏文件,所以前面有個點){在進行協(xié)作開發(fā)代碼管理的過程中,常常會遇到某些臨時文件、配置文件、或者生成文件等,這些文件由于不同的開發(fā)端會不一樣,如果使用git add . 將所有文件納入git庫中,那么會出現(xiàn)頻繁的改動和push,這樣會引起開發(fā)上的不便。Git可以很方便的幫助我們解決這個問題,那就是建立項目文件過濾規(guī)則。Git可以很方便的幫助我們解決這個問題,那就是建立項目文件過濾規(guī)則。git中提供兩種過濾機制,一種是全局過濾機制,即對所有的git都適用;另一種是針對某個項目使用的過濾規(guī)則。個人傾向于第二種。以我的一個項目為例,該項目用.net開發(fā),.config文件、包括生成的bin/Debug, bin/Release文件等,
我希望不加入git管理。
在代碼目錄下建立.gitignore文件:vim .gitignore ,內容如下:
[plain] view plaincopy
#過濾數(shù)據(jù)庫文件、sln解決方案文件、配置文件
*.mdb
*.ldb
*.sln
*.config
#過濾文件夾Debug,Release,obj
Debug/
Release/
obj/
然后調用git add. ,執(zhí)行 git commit即可。
}
方式一:
首先要強調一點,這個文件的完整文件名就是“.gitignore”,注意最前面有個“.”。這樣沒有擴展名的文件在Windows下不太好創(chuàng)建,這里給出win7的創(chuàng)建方法:
創(chuàng)建一個文件,文件名為:“.gitignore.”,注意前后都有一個點。保存之后系統(tǒng)會自動重命名為“.gitignore”。
一般來說每個Git項目中都需要一個“.gitignore”文件,這個文件的作用就是告訴Git哪些文件不需要添加到版本管理中。
實際項目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密碼的配置文件等等。
這個文件的內容是一些規(guī)則,Git會根據(jù)這些規(guī)則來判斷是否將文件添加到版本控制中。
下面我們看看常用的規(guī)則:
很簡單吧,被過濾掉的文件就不會出現(xiàn)在你的GitHub庫中了,當然本地庫中還有,只是push的時候不會上傳。
需要注意的是,gitignore還可以指定要將哪些文件添加到版本管理中:
唯一的區(qū)別就是規(guī)則開頭多了一個感嘆號,Git會將滿足這類規(guī)則的文件添加到版本管理中。
為什么要有兩種規(guī)則呢?想象一個場景:我們只需要管理/mtk/目錄中的one.txt文件,這個目錄中的其他文件都不需要管理。那么我們就需要使用:
假設我們只有過濾規(guī)則沒有添加規(guī)則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來!
最后需要強調的一點是,如果你不慎在創(chuàng)建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規(guī)則,這些規(guī)則也不會起作用,Git仍然會對所有文件進行版本管理。
簡單來說,出現(xiàn)這種問題的原因就是Git已經(jīng)開始管理這些文件了,所以你無法再通過過濾規(guī)則過濾它們。
所以大家一定要養(yǎng)成在項目開始就創(chuàng)建.gitignore文件的習慣,否則一旦push,處理起來會非常麻煩。
方式二:
就是新建.gitignore然后再里面聲明要忽略的文件夾或者文件就可以了,不過麻煩又來了,因為是點開頭,沒有文件名,沒辦法直接在windows目錄下直接創(chuàng)建,必須通過右鍵Git Bash,按照linux的方式來新建.gitignore文件。具體步驟如下:
1. 在需要創(chuàng)建 .gitignore 文件的文件夾, 右鍵選擇
Git Bash 進入命令行,進入項目所在目錄。
2. 輸入 touch .gitignore 在文件夾就生成了一個“.gitignore”文件。
然后在”.gitignore” 文件里輸入你要忽略的文件夾及其文件就可以了。
3.然后用編輯器打開這個文件進行編輯就行了。如果你很牛,熟悉linux下的vi編輯的命令,也可以用命令來聲明規(guī)則額。在這里就不說了額,
附: vi編輯器的怎么換行呢?
總結:vi保存退出命令x和wq的區(qū)別
搜集:不會linux下vi命令,傷不起啊
4.然后就寫規(guī)則來操作要忽略的文件了。.gitignore文件過濾有兩種模式,開放模式和保守模式
4.1開放模式負責設置過濾哪些文件和文件夾
eg:
過濾文件夾設置:
/mtk/ 表示過濾這個文件夾
過濾文件設置
指定過濾某種類型的文件:
*.zip
*.rar
*.via
*.tmp
*.err
指定過濾某個文件:
/mtk/do.c
/mtk/if.h
4.2 b保守模式負責設置哪些文件不被過濾,也就是哪些文件要被跟蹤。
跟蹤某個文件夾
!/plutommi/mmi
跟蹤某類文件
!*.c
!*.h
跟蹤某個指定文件
!/plutommi/mmi/mmi_features.h
4.3.配置.gitignore 的簡易原則
采用共享模式與保守模式結合配置的辦法。eg:一個文件夾下有很多文件夾和文件,而我只想跟蹤其中的一個文件,這樣設置就可以滿足這種情況,先用共享模式把整個目錄 都設置為不跟蹤,然后再用保守模式把這個文件夾中想要跟蹤的文件設置為被跟蹤,配置很簡單,就可以跟蹤想要跟蹤的文件。
方式三:
.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好該文件可以為我們的版本管理帶來很大的便利,以下是個人對于配置 .gitignore 的一些心得。
1、配置語法:
以斜杠“/”開頭表示目錄;
以星號“*”通配多個字符;
以問號“?”通配單個字符
以方括號“[]”包含單個字符的匹配列表;
以嘆號“!”表示不忽略(跟蹤)匹配到的文件或目錄;
此外,git 對于 .ignore 配置文件是按行從上到下進行規(guī)則匹配的,意味著如果前面的規(guī)則匹配的范圍更大,則后面的規(guī)則將不會生效;
2、示例:
(1)規(guī)則:fd1/*
說明:忽略目錄 fd1 下的全部內容;注意,不管是根目錄下的 /fd1/ 目錄,還是某個子目錄 /child/fd1/ 目錄,都會被忽略;
(2)規(guī)則:/fd1/*
說明:忽略根目錄下的 /fd1/ 目錄的全部內容;
(3)規(guī)則:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
說明:忽略全部內容,但是不忽略 .gitignore 文件、根目錄下的 /fw/bin/ 和 /fw/sf/ 目錄;
方式四:
第一行告訴 Git 忽略所有以 .o 或 .a 結尾的文件。一般這類對象文件和存檔文件都是編譯過程中出現(xiàn)的,我們用不著跟蹤它們的版本。第二行告訴 Git 忽略所有以波浪符(~)結尾的文件,許多文本編輯軟件(比如 Emacs)都用這樣的文件名保存副本。此外,你可能還需要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。要養(yǎng)成一開始就設置好 .gitignore 文件的習慣,以免將來誤提交這類無用的文件。
文件 .gitignore 的格式規(guī)范如下:
所謂的 glob 模式是指 shell 所使用的、簡化了的正則表達式。星號(*)匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數(shù)字)。
我們再看一個 .gitignore 文件的例子:
其他信息可以直接 man gitignore 查看。