git忽略一些文件不加入版本控制

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 目錄了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容