簡體   English   中英

git使用git rm命令刪除不在.gitignore中的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM