.gitignoreがファイルを無視しないのはなぜですか?


125

下の画像を参照してください。私の.gitignoreファイルはsrc / dist内のすべてのファイルを無視するはずですが、そうではありません。

ここに画像の説明を入力してください

回答:


215

.gitignoreまだリポジトリに含まれていないファイルのみを無視します。すでにgit addいくつかのファイルを編集した場合でも、それらの変更は引き続き追跡されます。これらのファイルをリポジトリから削除するには(ファイルシステムからではなく)git rm --cached、それらを使用します。


9
git rm --cached file_name.extは、1つのファイルのgitignoreを更新するのに適しています。ありがとう。
sybozz

3
私はこれを行いましたが、GitHubは引き続きそれらを追跡して追加したいと考えています。
Netside

91

.gitignoreファイルは、Gitによって追跡されないファイルが追跡されないままであることを保証します。

フォルダー/ファイルを.gitignoreファイルに追加するだけでは追跡が解除されません。Gitによって追跡されたままになります。

ファイルの追跡を解除するには、.gitignoreファイルにリストされている追跡ファイルをリポジトリから削除する必要があります。次に、それらを再度追加し、変更をコミットします。

これを行う最も簡単で完全な方法は、リポジトリ内のすべてのファイルを削除してキャッシュし、それらをすべて元に戻すことです。.gitignoreファイルにリストされているすべてのフォルダー/ファイルは追跡されません。リポジトリの最上位フォルダから、次のコマンドを実行します。

git rm -r --cached . git add .

次に、変更をコミットします。

git commit -m "Untrack files in .gitignore"

不要なファイルを含む以前のコミットは、コミット履歴に残っていることに注意してください。GitHubにプッシュするときは.envclient_secret.jsonファイルまたはファイルが含まれている可能性があるコミット履歴に注意してください。

ベストプラクティスは、.gitignoreファイルを作成し、プロジェクトの開始時に追跡しないフォルダ/ファイルをそのファイルに入力することです。ただし、多くの場合、不要なファイルが追跡および保存されていることを認識した後、.gitignoreファイルに追加する必要があります。


答えてくれてありがとう。これは本当に役に立ちました。リポジトリをgitまで上げることも忘れないでください
Chris Reed

git rm -r --cached .ロールバックを使用した後、すべての変更は.gitignoreで除外されるべきではないすべてのファイルを再度追加するようにも機能します。
Adam Hurwitz

8

gitignoreは、追跡されていないファイルのみを無視します。ファイルは変更済みとしてマークされます。つまり、ファイルはコミットされ、過去と現在はgitによって追跡されます。

それらを無視するには、まずそれらを削除git rmし、コミットしてから無視する必要があります。


6

git rm -r --cached ./node_modulesを使用できます。ノードを無視したいとします


4

これを見てください:.gitignoreが機能していません 特にADTCからのコメント:

.gitignoreファイルがANSIまたはUTF-8エンコーディングを使用していることを確認してください。Unicode BOMなどの他のものを使用している場合、Gitがファイルを読み取れない可能性があります。– ADTC 12月14日2017年12月39日


0

まず、gitリポジトリからindex.lockファイルを削除します

rm -f .git/index.lock

次に.gitignoreを追加します

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