git 创建 .gitignore 文件过滤规则及注意事项
以下转自:http://blog.longwin.com.tw/2010/01/git-ignore-howto-set-zim-2010/
環境
- Git 所管理的專案名稱、位置: /home/user/doc
下述範例是以 Zim 為主, Zim 是一套桌面的 Wiki 編輯器, 裡面寫的內容都會存成 txt 檔, .zim 的目錄下會存 "*.cache" 和 "zim 本身自己的設定值".
Zim 在剛開始建立完成後, 就使用下述步驟:
- cd /home/user/doc
- git init
- git commit -a
- git push #一開始沒有設定 .gitignore, 所以會將 .zim/* 都 commit 進去
於每次開啟 Zim 後, 都會出現
modified: .zim/history.cache
modified: .zim/index.cache
造成 git commit -a 的麻煩 (因為多台電腦要同步時, index.cache / history.cache 都會出現需要 merge 的狀況), 所以想設定 .gitignore 來把它拿掉. (方便 git commit -a)
設定 .gitignore 位置、方法
設定 Git ignore 的方式都一樣, 有下面幾個地方可以設定, 依自己喜好 / 需求來設定即可.(設定位置)
- vim ~/.gitignore # 對所有 Git 的專案生效 (自己的 home 目錄下)
- vim doc/.gitignore # doc 是專案名稱, 用這個的好處是, 將 .gitignore commit 進去, 此 .gitignore 可以隨著專案到處走. (Git 管理的 Project 目錄下)
- vim doc/.git/info/exclude # 只有單獨於此處 .git 生效 (Project 的 .git/info/exclude 檔案)
- 這幾個地方都可以設定, 可以使用 * 等符號. 詳可見: gitignore(5) Manual Page
於 .zim 的狀況, 可以設定下述: (設定方法)
- 所有 . 開頭的目錄 / 檔案都不 commit
.*
- .zim 目錄內 的 所有 *.cache 都不 commit
.zim/*.cache
- 只有 .zim/history.cache, .zim/index.cache 不 commit
.zim/history.cache
.zim/index.cache
.gitignore 無法生效 的 問題修復
在測試狀況都是正常, 但是在 Zim 實際使用就有問題, 每次都出現 modified 的解法.
解法
- 因為第一次 commit 已經將 .zim/*.cache commit 進去了, 所以每次它都會去檢查, 造成都出現 modified 的狀況.
- git rm -f .zim/history.cache
- git rm -f .zim/index.cache
- git commit # 即可
- 再將 .gitignore 設定好, 就可以避免掉這些狀況囉~
(---插一句:主要是如果想利用.gitignore的过滤功能过滤文件,则必须不能将文件提交到git仓库中,如果在设定过滤法则之前将文件提交过,则过滤功能将不再生效,所以必须在文件提交之前设定过滤规则。---)
範例 -我的 Zim 設定方式
- cd /home/user/doc
- vim .gitignore
.zim/*.cache
- git add .gitignore
- git commit
- git push
------------------------------我是分割线-----------------------------------------------
git 创建 .gitignore 文件 建立项目过滤规则
转自:http://hi.baidu.com/orangejackylee/item/d34091bc271844aaebba9377
创建 .gitignore 随意设置想跟踪哪些文件 和不跟踪哪些文件.
1.在项目根目录下建立 .gitignore 文件
2. .gitignore文件过滤有两种模式,开放模式和保守模式
2.1开放模式负责设置过滤哪些文件和文件夹
eg:
过滤文件夹设置:
/mtk/ 表示过滤这个文件夹
过滤文件设置
指定过滤某种类型的文件:
*.zip
*.rar
*.via
*.tmp
*.err
指定过滤某个文件:
/mtk/do.c
/mtk/if.h
2.2 b保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。
跟踪某个文件夹
!/plutommi/mmi
跟踪某类文件
!*.c
!*.h
跟踪某个指定文件
!/plutommi/mmi/mmi_features.h
3.配置.gitignore 的简易原则
采 用共享模式与保守模式结合配置的办法。eg:一个文件夹下有很多文件夹和文件,而我只想跟踪其中的一个文件,这样设置就可以满足这种情况,先用共享模式把 整个目录 都设置为不跟踪,然后再用保守模式把这个文件夹中想要跟踪的文件设置为被跟踪,配置很简单,就可以跟踪想要跟踪的文件。
4.我做mtk项目用到的 .gitignore 文件的具体配置如下:
#######开放模式############
###############
# folder #
###############
/_souceInsight_/
/build/
/MoDIS/
/Doc/
/mtk_lib/
/scripts/
/header_temp/
/tools/AudioResGen/
/tools/GLBOptionSwtichRef/
/tools/GMSL/
/tools/MinGW/
/tools/MSYS/
/tools/NewMMIResourceTool/
/tools/NVRAMStatistic/
/tst/
/verno/
/plutommi/tool/
/plutommi/Customer/ResGenerator/
/plutommi/Customer/CustResource/
/plutommi/Customer/LcdResource/
/plutommi/Customer/Images/
/plutommi/mmi/Framework/EventHandling/EventsInc/mmi_menu_handlers.h
/vendor/font/MTK/official/project/plutommi/content/inc/
/vendor/font/MTK/official/project/plutommi/content/src/
###############
# fixed file #
###############
.gitignore
*.exe
*.txt
*.def
*.dsp
*.lib
*.doc
*.dll
*.lnt
*.pm
*.xls
*.dbg
*.DBG
*.o
*.plg
*.keep
###############
# temp file #
###############
~*
*.log
*.cmm
*.men
*.ini
*.fig
*.cmp
*.tmp
###############
# script #
###############
*.bat
#########保守模式############
!/plutommi/Customer/CustResource/PLUTO_MMI/
!/plutommi/Customer/LcdResource/MainLcd128X160/
!/plutommi/Customer/Images/PLUTO128X160/image.zip
!/vendor/font/MTK/official/project/plutommi/content/inc/MainLcd128X160/
!/vendor/font/MTK/official/project/plutommi/content/src/MainLcd128X160/