Git 忽略一些檔案不加入版本控制

2021-09-07 18:16:01 字數 1452 閱讀 1988

在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改 .gitignore 檔案的方法。這個檔案每一行儲存了乙個匹配的規則例如:

# 此為注釋 – 將被 git 忽略

*.a       # 忽略所有 .a 結尾的檔案

!lib.a    # 但 lib.a 除外

/todo     # 僅僅忽略專案根目錄下的 todo 檔案,不包括 subdir/todo

build/    # 忽略 build/ 目錄下的所有檔案

doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

這樣設定了以後 所有的 .pyc 檔案都不會新增到版本庫中去。

另外 git 提供了乙個全域性的 .gitignore,你可以在你的使用者目錄下建立 ~/.gitignoreglobal 檔案,以同樣的規則來劃定哪些檔案是不需要版本控制的。

需要執行 git config --global core.excludesfile ~/.gitignoreglobal來使得它生效。

其他的一些過濾條件

* ?:代表任意的乙個字元

* *:代表任意數目的字元

* :必須不是此型別

* :代表ab,bb,cx中任一型別即可

* [abc]:代表a,b,c中任一字元即可

* [ ^abc]:代表必須不是a,b,c中任一字元

由於git不會加入空目錄,所以下面做法會導致tmp不會存在tmp/*             //忽略tmp資料夾所有檔案

改下方法,在tmp下也加乙個.gitignore,內容為

*!.gitignore

還有一種情況,就是已經commit了,再加入gitignore是無效的,所以需要刪除下快取

git rm -r --cached ignore_file

注意: .gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。

正確的做法是在每個clone下來的倉庫中手動設定不要檢查特定檔案的更改情況。

git update-index --assume-unchanged path    在path處輸入要忽略的檔案。

另外 git 還提供了另一種 exclude 的方式來做同樣的事情,不同的是 .gitignore 這個檔案本身會提交到版本庫中去。用來儲存的是公共的需要排除的檔案。而 .git/info/exclude 這裡設定的則是你自己本地需要排除的檔案。 他不會影響到其他人。也不會提交到版本庫中去。

.gitignore 還有個有意思的小功能, 乙個空的 .gitignore 檔案 可以當作是乙個 placeholder 。當你需要為專案建立乙個空的 log 目錄時, 這就變的很有用。 你可以建立乙個 log 目錄 在裡面放置乙個空的 .gitignore 檔案。這樣當你 clone 這個 repo 的時候 git 會自動的建立好乙個空的 log 目錄了

Git 忽略一些檔案不加入版本控制

在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改 gitignore 檔案的方法。這個檔案每一行儲存了乙個匹配的規則例如 此為注釋 將被 git 忽略 a 忽略所有 a 結尾的檔案 lib.a 但 lib.a 除外 todo 僅僅忽略專案根目錄下的 todo 檔案,不包括 s...

Git 忽略一些檔案不加入版本控制

在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改 gitignore 檔案的方法。這個檔案每一行儲存了乙個匹配的規則例如 此為注釋 將被 git 忽略 a 忽略所有 a 結尾的檔案 lib.a 但 lib.a 除外 todo 僅僅忽略專案根目錄下的 todo 檔案,不包括 s...

Git 忽略一些檔案不加入版本控制

在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改 gitignore 檔案的方法。這個檔案每一行儲存了乙個匹配的規則例如 此為注釋 將被 git 忽略 a 忽略所有 a 結尾的檔案 lib.a 但 lib.a 除外 todo 僅僅忽略專案根目錄下的 todo 檔案,不包括 s...