刪除Git服務器文件但是保留本地文件


參考:

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了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM