vim id_rsa.pub
在Git中如果想忽略掉某個(gè)文件,不讓這個(gè)文件提交到版本庫(kù)中,可以使用修改 .gitignore 文件的方法。這個(gè)文件每一行保存了一個(gè)匹配的規(guī)則例如:
此為注釋 – 將被 Git 忽略
*.a # 忽略所有 .a 結(jié)尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項(xiàng)目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會(huì)忽略 doc/notes.txt 但不包括 doc/server/arch.txt
這樣設(shè)置了以后 所有的 .pyc 文件都不會(huì)添加到版本庫(kù)中去。
另外 git 提供了一個(gè)全局的 .gitignore,你可以在你的用戶目錄下創(chuàng)建 ~/.gitignoreglobal 文件,以同樣的規(guī)則來(lái)劃定哪些文件是不需要版本控制的。
需要執(zhí)行 git config --global core.excludesfile ~/.gitignoreglobal來(lái)使得它生效。
其他的一些過(guò)濾條件
- ?:代表任意的一個(gè)字符
- *:代表任意數(shù)目的字符
- {!ab}:必須不是此類型
- {ab,bb,cx}:代表ab,bb,cx中任一類型即可
- [abc]:代表a,b,c中任一字符即可
- [ ^abc]:代表必須不是a,b,c中任一字符
由于git不會(huì)加入空目錄,所以下面做法會(huì)導(dǎo)致tmp不會(huì)存在 tmp/* //忽略tmp文件夾所有文件
改下方法,在tmp下也加一個(gè).gitignore,內(nèi)容為
!.gitignore
還有一種情況,就是已經(jīng)commit了,再加入gitignore是無(wú)效的,所以需要?jiǎng)h除下緩存
git rm -r --cached ignore_file
git commit -m “提交”
注意: .gitignore只能忽略那些原來(lái)沒(méi)有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無(wú)效的。
正確的做法是在每個(gè)clone下來(lái)的倉(cāng)庫(kù)中手動(dòng)設(shè)置不要檢查特定文件的更改情況。
git update-index --assume-unchanged PATH 在PATH處輸入要忽略的文件。
另外 git 還提供了另一種 exclude 的方式來(lái)做同樣的事情,不同的是 .gitignore 這個(gè)文件本身會(huì)提交到版本庫(kù)中去。用來(lái)保存的是公共的需要排除的文件。而 .git/info/exclude 這里設(shè)置的則是你自己本地需要排除的文件。 他不會(huì)影響到其他人。也不會(huì)提交到版本庫(kù)中去。
gitignore 還有個(gè)有意思的小功能, 一個(gè)空的 .gitignore 文件 可以當(dāng)作是一個(gè) placeholder 。當(dāng)你需要為項(xiàng)目創(chuàng)建一個(gè)空的 log 目錄時(shí), 這就變的很有用。 你可以創(chuàng)建一個(gè) log 目錄 在里面放置一個(gè)空的 .gitignore 文件。這樣當(dāng)你 clone 這個(gè) repo 的時(shí)候 git 會(huì)自動(dòng)的創(chuàng)建好一個(gè)空的 log 目錄了。