1. 程式人生 > >詳解 git 忽略檔案 刪除遠端倉庫的檔案

詳解 git 忽略檔案 刪除遠端倉庫的檔案

要解決的問題

  1. 忽略指定型別的檔案 或 某個指定檔案(夾)
  2. 將已經push到github的檔案刪除, 但本地的檔案不刪除 (寫忽略規則之前就把這個資料夾push了 T_T )
  3. 將想要忽略掉的檔案的相關記錄(如下圖) 清理掉
    (包括保留本地檔案和不保留兩種情況)

解決方法

問題1 (忽略指定型別的檔案 或 某個指定檔案(夾))

本地倉庫忽略

本地倉庫的檔案忽略規則可以在 .git/info/exclude 檔案中新增. 對當前這個倉庫下的所有檔案起作用. 這些忽略的檔案不會提交到共享庫中, 因而不會被協作者所共享. 規則如下:

*.[oa] # 忽略以 o 或 a 為拓展名的檔案
*~
*.exe
.* # 忽略所有以 . 開頭的檔案
test.cpp # 忽略這個檔案
/test/ # 忽略 **根目錄** 下的 test 資料夾裡面所有的內容

(更多規則可以參考shell的正則表示式)

當前工作目錄新增檔案忽略

對於每一級工作目錄, 建立一個.gitignore檔案, 向該檔案中新增要忽略的檔案或目錄. 規則同上

全域性忽略

不需要在每一個倉庫中新增 .gitignore 檔案或者修改 exclude檔案(畢竟在.git檔案裡亂動可能專案就沒了), 只需要在使用者賬戶資料夾下建立.gitignore_global檔案就可以忽略我們想忽略的內容, 步驟如下:

  1. 在git bash下執行命令 git config --global core.excludesfile ~/.gitignore_global, 然後你會發現, ~/.gitconfig
    檔案裡多了一行
  2. 建立 .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: