[英]git removing files that are not in .gitignore with git rm command
我有這樣的結構
SDI
|-.gitignore
\-webapp
在SDI / webapp / app目錄中,當我運行git rm -r --cached .
,我看到這樣的文件已刪除
rm 'webapp/app/views/MyStuff/myGroups.html'
rm 'webapp/app/views/MyStuff/userAdd.html'
rm 'webapp/app/views/MyStuff/userEdit.html'
rm 'webapp/app/views/auth/Secure/login.html'
rm 'webapp/app/views/errors/404.html'
rm 'webapp/app/views/errors/500.html'
rm 'webapp/app/views/main.html'
rm 'webapp/app/views/tags/auth/check.tag'
rm 'webapp/app/views/tags/generic.html'
rm 'webapp/app/views/tags/text.html'
我的.gitignore contents
如下
eclipse/
tmp/
bin/
tools/play-1.2.5/framework/pym/
為什么要刪除我的所有文件? 與過去我做過的其他事情相比,我確實將git config file.mode false
作為該存儲庫中唯一的東西。
http://www.kernel.org/pub/software/scm/git/docs/git-rm.html
從索引或工作樹和索引中刪除文件 。 git rm不會僅從您的工作目錄中刪除文件。 (沒有選擇僅從工作樹中刪除文件,而是將其保留在索引中的選項;如果要這樣做,請使用/ bin / rm。)要刪除的文件必須與分支的尖端相同,盡管可以使用-f選項覆蓋默認行為,但無法在索引中暫存對其內容的更新。 給定--cached時,暫存的內容必須與分支的尖端或磁盤上的文件匹配,從而允許僅從索引中刪除文件。
和
-r在給出前導目錄名稱時,允許遞歸刪除。
和
--cached使用此選項可取消登台並僅從索引中刪除路徑。 無論是否已修改,工作樹文件都將被保留。
我不知道您想要實現什么(因為您沒有告訴),但是該命令可以准確地執行它應該執行的操作以及執行的方式。
.gitignore
“ just”告訴git,當遞歸調用git add
(例如git add .
或git commit -a
),或者以git status
顯示它們(可能還有其他工具,但不常見),不要向索引添加更改用例)。 因為無論如何都不應該對此文件進行更改,所以git rm
不會影響它們。
它不是在刪除文件,而是在取消暫存文件。 您忽略的文件將被忽略。 所以不用擔心。 如果要刪除忽略的文件,可以
git clean -xdf
更新:
如果您確實有需要的文件,更安全的方法(如評論中所述)是
git stash -u && git clean -xdf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.