參考:
https://blog.csdn.net/u012804886/article/details/83059315
https://www.cnblogs.com/wfsovereign/p/4186910.html
需求分析
假設小明有一天不小心把本地倉庫的一個文件夾A推送到了遠程GIT服務器(例如:github,gitlab,gitee)上,此時想刪除遠程倉庫的文件夾A,但是本地又不想刪除。小明於是去問小紅,怎么辦?小紅不假思索的說,github,gitlab 不是可以刪除嗎?你直接在遠程服務器上操作呀。小明告訴小紅,你有所不知,遠程操作只能操作單個文件,無法刪除文件夾,你可不會傻到一個一個文件去刪除。小紅說,那怎么辦呢?
解決辦法
方法一
這里以刪除 .setting 文件夾為案例
git rm -r --cached .setting #--cached不會把本地的.setting刪除 git commit -m 'delete .setting dir' git push -u origin master
方法二
如果誤提交的文件夾比較多,方法一也較繁瑣
直接修改.gitignore文件,將不需要的文件過濾掉,然后執行命令
git rm -r --cached . git add . git commit git push -u origin master
下面是我的操作:
我的情況是:git已經提交了許多我不想提交的文件和文件夾,如:venv,1.py,demo開頭的文件(之前不知道有gitignore這個功能)
所以現在需要做的是
當前我上傳到github的項目目錄結構如下,圈出的文件是我希望在本地保留,但git add .時不要上傳到github的:


1.刪除github上多余的文件
#刪除單個文件夾 git rm -r --cached venv git commit -m 'delete venv dir' git push -u origin master

刷新github可以看到venv,1.py,demoTest文件已經被刪除了

2.在項目 根目錄 下創建.gitignore文件,創建ignore規則(希望哪些文件不交給git管理呢?)
gedit .gitignore
.gitignore的內容這樣寫
venv 1.py demo*
linux環境下 文件前帶.表示該文件是隱藏文件
使用ls -al命令查看該文件已被成功創建

具體gitignore的配置規則參照:
https://www.cnblogs.com/kevingrace/p/5690241.html
3.測試ignore規則是否生效
git check-ignore -v venv git check-ignore -v 1.py git check-ignore -v demoTest.py
如下圖所示,這樣就表示ignore文件配置可以匹配到我們不希望交給git進行版本控制的文件或文件夾了

4.測試ignore配置生效后,push代碼到github
可以看到本地項目文件內容如下:

但這次git add . 只將.gitignore文件提交給git進行了版本控制

5.檢查上傳到github的項目是否忽略了venv文件夾,1.py,demoTest.py

這次只把.gitignore文件上傳到github了
