.gitignore配置規則 及其 git rm -r --cached 去掉已經託管在git上的文件

一,配置gitignore文件

二,git rm -r --cached  文件名

三,git add .

四,git commit -m 'updata .gitignore'

 

1)  gitignore文件
  在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 文件都不會添加到版本庫中去。

2) gitignoreglobal全局忽略文件
另外 git 提供了一個全局的 .gitignore,你可以在你的用戶目錄下創建 ~/.gitignoreglobal 文件,以同樣的規則來劃定哪些文件是不需要版本控制的。

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

其他的一些過濾條件
 

* ?:代表任意的一個字符
* *:代表任意數目的字符
* {!ab}:必須不是此類型
* {ab,bb,cx}:代表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 目錄了。


3) git rm -r --cached顯神威
 

但是有時候,gitignore考慮不全面,發現有不該提交的文件已經提交後,僅僅在.gitignore中加入忽略是不行的。這個時候需要執行:

git rm -r --cached 文件/文件夾名字
去掉已經託管的文件,然後提交即可。
--------------------- 
原文:https://blog.csdn.net/themagickeyjianan/article/details/55519111 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章