標籤:
轉自: http://cwind.iteye.com/blog/1666646
有很多檔案不必使用git管理。例如Eclipse或其他IDE產生的專案檔,編譯產生的各種目標或臨時檔案等。使用git status時,會在Untracked files裡面看到這些檔案清單,在一次需要添加的檔案比較多時(使用git add . / git add -u),會把這些所有的未追蹤檔案添加進索引。
============一些牢騷============ 於是自然想要告訴git把這些檔案忽略,我們當然會想到去Google,輸入本文標題這個關鍵字(一部分人會直接去看document),然後當然會有很多解決方案,多數告訴我們在.gitignore檔案中添加待忽略的檔案目錄列表;照做,問題很有可能依然存在。 再Google,這次可能找到了help.github.com或stackoverflow上,看到一些原文的討論;其中講到在向.gitignore添加忽略檔案之前一定要保證那些檔案未被git跟蹤,即先使用命令git rm --cached filename將它們從索引中刪除。終於看到靠譜的解決方案不禁暗喜,照做--敲一下git status試試,問題很有可能仍然存在。 太多中文“技術資料”是複製照搬過來的,轉載的人自己並沒有試過;稍好一點的在英文社區看到了相關討論,隨手翻譯了一下發過來,可能存在理解上的問題或者忽略了一些細節,導致依然沒辦法解決問題。 所以搜尋引擎給出的中文的結果,有很多對解決問題絲毫無用的。Git忽略檔案是很普遍也應該是很簡單的一個問題,但多數文章根本連這個問題都沒搞明白,於是引發了這一系列的牢騷。 遇到問題要多思考,想想問題的本質,解決方案的原理;最重要的是要切實地去動手做。============牢騷結束============
解決方案:
1. 本地倉庫忽略本地倉庫的檔案忽略規則可以在.git/info/exclude檔案中添加。這些忽略的檔案不會提交到共用庫中,因而不會被共同作業者所共用。
2. 當前工作目錄添加檔案忽略對於每一級工作目錄,建立一個.gitignore檔案,向該檔案中添加要忽略的檔案或目錄。
但在建立並編輯這個檔案之前,一定要保證要忽略的檔案沒有添加到git索引中。使用命令
git rm --cached filename將要忽略的檔案從索引中刪除。--摘抄.gitignore的格式規範• 所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略。
• 可以使用標準的 glob 模式比對。
• 匹配模式最後跟反斜線(/)說明要忽略的是目錄。
• 要忽略指定模式以外的檔案或目錄,可以在模式前加上驚歎號(!)取反。
所謂的 glob 模式是指 shell 所使用的簡化了的Regex。星號(*)匹配零個或多個任一字元;[abc] 匹配任何一個列在方括弧中的字元(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);問號(?)只匹配一個任一字元;如果在方括弧中使用短劃線分隔兩個字元,表示所有在這兩個字元範圍內的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的數字)。2.1 工作目錄的每一層下級目錄都可以有一個.gitignore檔案,以說明目前的目錄下需要被git忽略的檔案或目錄2.2 .gitignore檔案可以被提交到共用庫中被共同作業者共用
3. 全域的.gitignore可以通過建立~/.gitignore_global並添加到git全域配置以減少每層目錄的規則重複定義。使用命令
git config --global core.excludesfile ~/.gitignore_global即可.gitignore_global檔案範例Ruby代碼
- <span style="font-size: small;"># Compiled source #
- ###################
- *.com
- *.class
- *.dll
- *.exe
- *.o
- *.so
-
- # Packages #
- ############
- # it‘s better to unpack these files and commit the raw source
- # git has its own built in compression methods
- *.7z
- *.dmg
- *.gz
- *.iso
- *.jar
- *.rar
- *.tar
- *.zip
-
- # Logs and databases #
- ######################
- *.log
- *.sql
- *.sqlite
-
- # OS generated files #
- ######################
- .DS_Store
- .DS_Store?
- ._*
- .Spotlight-V100
- .Trashes
- Icon?
- ehthumbs.db
- Thumbs.db
- </span>
References:
1. Ignoring files, https://help.github.com/articles/ignoring-files2. 初次使用git-忽略某些檔案, http://www.phperblog.net/?p=1733. git ignore file, Git增加忽略檔案, http://www.cnblogs.com/wucg/archive/2011/08/16/2141647.html
git忽略檔案【轉】