要解決的問題
- 忽略指定類型的文件 或 某個指定文件(夾)
- 將已經push到github的文件刪除, 但本地的文件不刪除 (寫忽略規則之前就把這個文件夾push了 T_T )
- 將想要忽略掉的文件的相關記錄(如下圖) 清理掉
(包括保留本地文件和不保留兩種情況)
解決方法
問題1 (忽略指定類型的文件 或 某個指定文件(夾))
本地倉庫忽略
本地倉庫的文件忽略規則可以在 .git/info/exclude
文件中添加. 對當前這個倉庫下的所有文件起作用. 這些忽略的文件不會提交到共享庫中, 因而不會被協作者所共享. 規則如下:
*.[oa] # 忽略以 o 或 a 為拓展名的文件
*~
*.exe
.* # 忽略所有以 . 開頭的文件
test.cpp # 忽略這個文件
/test/ # 忽略 **根目錄** 下的 test 文件夾里面所有的內容
(更多規則可以參考shell的正則表達式)
當前工作目錄添加文件忽略
對於每一級工作目錄, 創建一個.gitignore
文件, 向該文件中添加要忽略的文件或目錄. 規則同上
全局忽略
不需要在每一個倉庫中添加 .gitignore
文件或者修改 exclude
文件(畢竟在.git文件里亂動可能項目就沒了), 只需要在用戶賬戶文件夾下建立.gitignore_global
文件就可以忽略我們想忽略的內容, 步驟如下:
- 在git bash下執行命令
git config --global core.excludesfile ~/.gitignore_global
, 然后你會發現,~/.gitconfig
文件里多了一行
- 創建
.gitignore_global
文件, 在里面寫上規則就好了
問題2 (將已經push到github的文件刪除, 但本地的文件不刪除)
git rm -r --cached .vscode # 將文件夾從暫存區中刪除
git commit -m 'delete .vscode config' # 將修改后的暫存區合並到HEAD中
git push origin master # 推到遠端
順便復習一下查看暫存區命令 git ls-files
問題3 (將想要忽略掉的文件的相關記錄清理掉)
刪除暫存區的文件, 同時刪除本地的文件
git rm file_name # 刪除本地文件, 同時也從暫存區中刪除
git commit -m "delete" # 合並到HEAD中
git push origin master
提交刪除記錄
由於我已經手動將 .exe 文件刪除, 所以只需要執行
git add -A
git commit -m "delete"
git push origin master
Reference List: