詳解 git 忽略檔案 刪除遠端倉庫的檔案
阿新 • • 發佈:2019-08-05
要解決的問題
- 忽略指定型別的檔案 或 某個指定檔案(夾)
- 將已經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:
- https://cwind.iteye.com/blog/1666646
- http://gitbook.liuhui998.com/1_4.html
- https://www.cnblogs.com/e206842/p/7121927.html
- https://www.cnblogs.com/Cherry-B/p/4583505.html
- https://www.jianshu.com/p/abca119649b5
- https://www.runoob.com/manual/git-guide/