最近做項目時發現,代碼上傳遠程倉庫之后把應該要忽略的文件或目錄給push上去了(如.idea/,*.iml文件),
這時候去編輯project目錄下的.gitignore文件並添加忽略已經不起作用了,因為.gitignore只對從來沒有commit過的文件起作用。
那應該怎么處理呢?
可以通過git命令從暫存區刪除已提交的文件或目錄(就是把本地緩存刪除,改變成未track狀態),操作示例如下:
git rm -r --cached .idea/vcs.xml
git rm --cached xxxx.iml
或
git rm -r --cached .idea
接着修改.gitignore文件,並且commit 將修改后的暫存區合並到HEAD中,然后push的遠端主機,命令如下:
git commit -am "gitignore文件修改刪除XXX文件"
git push
備注:
1、如果項目目錄下沒有.gitignore文件,就需要創建將.gitignore文件並加入git,並push到遠程git庫
git add .gitignore 或
git commit -am "gitignore文件提交"
2、常見的.gitignore文件內容含:
/target/
/.settings/
.classpath
.project
.idea/
*.iml
等
3、同時刪除暫存區和工作區的文件
git rm -f xxx.iml 或git rm xxx.iml
4、錯誤提交到了版本庫,需要回退到之前的某一版本時
在這種情況下,只是刪除了工作區和暫存區的文件,是不會修改遠程庫的。這個時候,需要撤銷版本庫的修改提交。可以使用git reset命令。
git reset有三個選項,--hard、--mixed、--soft。
//僅僅只是撤銷已提交的版本庫,不會修改暫存區和工作區
git reset --soft 版本庫ID
//僅僅只是撤銷已提交的版本庫和暫存區,不會修改工作區
git reset --mixed 版本庫ID
//徹底將工作區、暫存區和版本庫記錄恢復到指定的版本庫
git reset --hard 版本庫ID