gitは.gitignoreに追加した後も変更されたファイルを表示します


252

これを.gitignoreファイルに追加してます

.idea/*

とにかくステータスは:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

私は何を間違っていますか?私は.idea / *をグローバル〜/ .gitignore_globalに追加しました が、gitステータス、とにかく私に表示されます:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

回答:


422

あなたの.gitignore作業が、彼らはインデックスに存在していたので、それはまだファイルを追跡しています。

これを停止するには、次のことを行う必要があります。 git rm -r --cached .idea/

コミットすると、.idea/ディレクトリはgitリポジトリから削除され、次のコミットでは.idea/ディレクトリが無視されます。

PS:ディレクトリを無視する.idea/代わりに使用できます.idea/*。パターンの詳細については.gitignoreの manページをご覧ください


git-rmmanページからの役立つ引用

--cached
    Use this option to unstage and remove paths only from the index. 
    Working tree files, whether modified or not, will be left alone.

「.idea /を追加するだけでも機能する」という意味を説明していただけませんか。これは使用.gitignoreしてから実行する代替ソリューションgit rm -cachedですか?
Mehrad 2015

3
@Mehradは.gitignoreの*は必要ありません
Steve Pitchers

2
いいえ、.idea /を追加するだけでは機能しません。答えで言ったように、すでにインデックスに含まれているからです。
Henrique de Sousa

15
だから、あなたはcommitキャッシュされたファイルを削除した後に必要があると言っていますか?それは本当に直感に反するようです。これらは私がコミットしたくないファイルです。そして、私はそれらをリポジトリから削除したくありません(単にが乱雑にならないようにしたいだけですgit status)。それとも私は本当に混乱していますか?
Scott Biggs

6
彼のファイルは以前のコミットのためにgitによってすでに追跡されていたため、それらを削除するには、リポジトリからそれらを削除する新しいコミットを作成する必要があります。
mcls

47

まだこの問題を探している可能性のある人にとっては、このページだけを見ています。

これにより、キャッシュされたインデックスファイルを削除し、.gitignoreファイルへの変更を含め、必要なインデックスファイルのみを追加できます。

1. git rm -r --cached .  
2. git add .
3. git commit -m 'Removing ignored files'

ここにもう少し情報があります。

  1. このコマンドは、キャッシュされたすべてのファイルをインデックスから削除します。
  2. このコマンドは、に記載されているファイルを除くすべてのファイルを追加しますgitignore
  3. このコマンドは、ファイルを再度コミットし、gitに無視させたいファイルを削除しますが、ローカルディレクトリに保持します。

1
これは私にとって便利でした。Windowscmdでは、シングルクォーテーションは#3では機能しないようです。git commit -am "無視されたファイルの削除"は使用できます。
Sundance.101

1
心配する必要はありません。明確で簡潔な回答にもう一度感謝します。
Sundance.101

1
この解決策は私のプロジェクトファイルを本当に混乱させています。これを実行した後、すべてを元に戻す必要がありました。
Fatmajk

1

ここや他の場所で提供されている解決策は私にとってはうまくいかなかったので、将来の読者のための議論に追加します。私はまだ手順を完全には理解していませんが、私の(同様の)問題をようやく解決し、共有したいと思います。

Windows 10のIntelliJ IDEAでgitを使用しているときに、数百のファイルを含むいくつかのドキュメントディレクトリを誤ってキャッシュしました。それらを追加して.gitignore(そしておそらくそれらを少し移動して)、デフォルトの変更リストから削除できませんでした。

私は最初に自分が行った実際の変更をコミットし、次にこれを解決しようとしました-時間がかかりすぎました。私は試しましgit rm -r --cached .たが、とフラグのpath-specさまざまなバリエーションで、常にエラーが発生しました。path-spec-f-r

git statusそれでもファイル名が表示されるので、私はそれらの一部をそのままで試してみましたgit rm -cachedが、うまくいきませんでした。変更の隠蔽と復元は機能しているように見えましたが、しばらくしてから再びキューに入れられました(正確なタイムフレームでは少し漠然としています)。私は最終的にこれらのエントリを削除しました

git reset

実際にコミットしたいステージング/キャッシュされた変更がない場合、これは良いアイデアだと思います。


0

追加するだけ git rm -r --cached <folder_name/file_name>

場合によっては、ファイルのcommitコマンドの後で.gitignoreファイルを更新します。したがって、ファイルはメモリにキャッシュされます。キャッシュされたファイルを削除するには、上記のコマンドを使用します。


-2
  1. Gitの追加。

  2. Gitステータス//変更されているファイルを確認する

    // git reset HEAD ---無視するファイルに置き換えます

  3. git reset HEAD .idea / <-コミット前に.ideaを除外したい人// git check statusとideaファイルがなくなり、準備完了です!

  4. git commit -m ''

  5. git push


これは、OPがリセットすることを前提としています。
SovietFrontier
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.