git rm -r --cached 去掉已经托管在git上的文件
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 filename?
去掉已經托管的文件,然后提交即可。
?
轉載于:https://www.cnblogs.com/dzcWeb/p/9516943.html
總結
以上是生活随笔為你收集整理的git rm -r --cached 去掉已经托管在git上的文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ldac笔记本电脑(笔记本ldac蓝牙)
- 下一篇: 升级 iOS 14 后,iPhone 耗