0

私はそのような構造を持っています

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過去に行った他のリポジトリと比較して、このリポジトリで唯一ユニークなものはあります。

4

2 に答える 2

4
  • Inは実際にはファイルを削除せず、インデックスから変更を削除するだけです。あなたの作業スペースは手つかずのままです。
  • あなたがそうするように言うので、それはこれをします。

http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

インデックスから、または作業ツリーとインデックスからファイルを削除します。git rmは、作業ディレクトリだけからファイルを削除することはありません。(作業ツリーからのみファイルを削除し、それをインデックスに保持するオプションはありません。必要に応じて/ bin / rmを使用してください。)削除するファイルは、ブランチの先端と同じである必要があります。また、コンテンツの更新をインデックスにステージングすることはできませんが、そのデフォルトの動作は-fオプションでオーバーライドできます。--cachedを指定すると、ステージングされたコンテンツはブランチの先端またはディスク上のファイルのいずれかに一致する必要があり、ファイルをインデックスからのみ削除できるようになります。

-r 先頭のディレクトリ名が指定されている場合に再帰的な削除を許可します。

--cached このオプションを使用して、インデックスからパスのみをステージング解除および削除します。作業ツリーファイルは、変更されているかどうかに関係なく、そのまま残されます。

何を達成したいのか(あなたが言わなかったので)わかりませんが、コマンドは正確に、何をすべきか、そしてどのようにすべきかを実行します。

.gitignore「just」は、git add再帰的に呼び出すときにインデックスに変更を追加しないようにgitに指示します(たとえばgit add .、またはgit commit -a)、またはそれらをgit status(そしておそらく他のツールですが、最も一般的なユースケースです)表示します。このファイルへの変更はとにかくステージングされるべきではないgit rmので、それらに影響を与えません。

于 2012-08-14T20:15:47.630 に答える
3

ファイルを削除するのではなく、ステージングを解除します。無視されたファイルは無視されます。だから、それについて心配しないでください。無視したファイルを削除したい場合は、

git clean -xdf

アップデート:

気になるファイルがある場合に(コメントに記載されているように)これを行うためのより安全な方法は、

git stash -u && git clean -xdf
于 2012-08-14T20:34:38.627 に答える