Gitignoreが機能しない


276

私の.gitignoreファイルが何らかの理由で動作していない、とグーグルのない量は、それを修正することができませんでした。ここに私が持っているものがあります:

*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log

それmasterは私のgitリポジトリであるディレクトリにあります。OSX 10.8.6を実行しているMacBookを使用しているため、Git 1.8.4.2を実行しています。


4
1.インデックスを作成するべきではないが、どのファイルにインデックスが作成されますか?2.これらのファイルをリポジトリに追加した後、.gitignoreを追加しましたか?
Ahmad

2
@Ahmad複数のプロジェクトで、/bin/を実行してもフォルダが表示されますgit status。追加したので、これらのファイルを変更していません.gitignore
user3280133 '21

1
「.gitignoreを追加したので」-ファイルを追加した後に.gitignoreを追加しましたか?
Ahmad


回答:


687

バージョン管理のファイル/フォルダーは、単にそれらをに追加したからといって、自分自身を削除するだけではありません.gitignore。それらはすでにリポジトリにあり、それらを削除する必要があります。これでこれを行うことができます:

これを行う前に、変更したすべてをコミットすることを忘れないでください。

git rm -rf --cached .
git add .

これにより、リポジトリからすべてのファイルが削除され、再び追加されます(今回はのルールに従います.gitignore)。


2
または、git checkout folder_to_ignore / *を使用して.gitignoreに追加したファイル/フォルダーを元に戻してみる
Zahra

1
@Greenishしかし、それらが既にコミットされている場合は機能しません。ステージングされている場合にのみ機能します。フォルダーがすでに.gitignoreにある場合は、(強制的に追加しない限り)発生しません。:)
Ahmad

1
変更をgithubにプッシュすると、機能しません。すべてが最新であると言います!!!!
Younes Henni博士、

1
申し訳ありませんAhmed gitignoreファイルを削除し、リモートリポジトリにプルして再度プッシュすることで問題を修正しました。git statusと入力したときのメッセージを覚えていません。私の問題は修正されました。どうもありがとう。
Dr. Younes Henni 2017年

3
これを簡単にするには、gitに 'git ignore'コマンドを追加する方が良いと思います。したがってgit ignore path/file、いつでも使用できます。
Tiw

123

すでにリポジトリに追加/初期化されている単一のファイルの追跡を解除するには、つまり、ファイルの追跡を停止し、システムから削除しないようにします。 git rm --cached filename

現在あなたの中にあるすべてのファイルを追跡解除するには.gitignore

まず未解決のコード変更をコミットしてから、次のコマンドを実行します。

git rm -r --cached .

これにより、変更されたファイルがインデックス(ステージング領域)から削除され、次のように実行されます。

git add .

コミットする:

git commit -m ".gitignore is now working"

ブランチをマージしてマスターに戻すか、ポインターを移動してください。これを試したところ、両方の機能ブランチが失われたためです。幸い、私は何の作業も失わず、作業ブランチからの最新の更新はすべてマスターブランチにリセットされましたが、設定によってはこの動作が望ましくない場合があります。
2018年

このコマンドを使用して、ファイルではなくフォルダーをキャッシュから削除するにはどうすればよいでしょうか。
RealMJDev

15

この質問への回答を追うためにウサギの穴を少し掘り下げた後(多分、私はビジュアルスタジオプロジェクトでこれを行わなければならなかったため)、簡単な方法は

  1. 追跡したくないファイルを一時的な場所にカットアンドペーストする

  2. それらのファイルの「削除」をコミットする

  3. の変更をコミットして、.gitignore一時的に移動したファイルを除外します

  4. ファイルをフォルダに戻します。

偶然にかなり普及して足に自分自身を撮影することなく、私はこれはそれについて移動する最も簡単な方法であることが判明(少なくとも視覚的なスタジオで、または私は、Android Studioのような他のIDEのヒーブベースの環境を前提とします)git rm -rf --cached .された後、作業していたビジュアルスタジオプロジェクトが読み込まれませんでした。


2
私はこのアプローチをとても気に入っています。たとえ「適切」と見なされていなくても、破壊的ではないようです。
theyetiman 2017

6

私の場合、メモ帳でファイルを開いたときに明確に表示されたのは、ファイルの先頭の空白スペースでしたが、Visual Studio Codeではわかりませんでした。


4

私は何かを使って共通のものを生成.gitignoreし、これに遭遇しました。@Ozeshの回答を読んだ後、右下に行末のタイプを示す素敵なインジケーターがあるため、VS Codeで開きました。それはLFだったので、提案どおりCRLFに変換しましたが、サイコロはありませんでした。

次に、行末の横を見て、UTF16を使用して保存されていることに気付きました。だから私は出来上がりのUTF8エンコーディングを使って再保存しました、それはうまくいきました。CRLFが重要であるとは思わなかったので、LFに戻して確認しましたが、それでも動作しました。

もちろん、彼はすでにファイルをコミットしていて、すでにインデックスが付けられていたため、これはOPの問題ではありませんでしたが、他の誰かがこれに遭遇した場合に備えて共有したいと思いました。

TLDR ; ファイルをまだコミットしておらず、.gitignoreがまだ尊重されていない場合は、ファイルのエンコードを確認し、UTF8を確認してください。UTF8が機能しない場合は、行末をいじってみてください。


1
UTF16が原因でした。VSコードを開く> .gitignoreを開く>コマンドプロンプトを開く> "ファイルエンコーディングの変更"> "UTF-8">ファイルの保存
Michael

3

私の場合、.gitignoreの行末の空白が原因でした。したがって、.gitignoreの空白に注意してください!


2

私は次のようにして問題を解決しました:

まず、私はWindowsユーザーですが、同様の問題に直面しています。だから、私はここに私の解決策を投稿しています。

.gitignoreが想定どおりに機能しないことがある単純な理由が1つあります。EOL変換動作が原因です。

これはそのための簡単な修正です

編集> EOL変換> Windows形式>保存

そのためのテキストエディター設定のせいにすることができます

例えば:

私はWindows開発者なので、Vimユーザーとは異なり、テキストの編集には通常Notepad ++を使用します。

だから何が起こるかは、Notepad ++を使用して.gitignoreファイルを開くと、次のようになります。

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore


# See https://help.github.com/ignore-files/ for more about ignoring files.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

デフォルトのメモ帳を使用して同じファイルを開くと、これが取得されます

## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from  https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache 

そのため、出力を見てすでに推測している可能性があります。.gitignore内のすべてが1つのライナーになり、最初に##があるため、すべてがコメント化されているかのように動作します。

これを修正する方法は簡単です:Notepad ++で.gitignoreファイルを開いて、次の手順を実行してください

編集> EOL変換> Windows形式>保存

次にWindowsのデフォルトのメモ帳で同じファイルを開くと、すべてが適切にフォーマットされているはずです。それを試して、これがあなたのためにうまくいくかどうか見てください。


1

また、コメントは独自の行にする必要があります。エントリー後は入れません。したがって、これは機能しません:

/node_modules  # DON'T COMMENT HERE (since nullifies entire line)

しかし、これはうまくいきます:

# fine to comment here
/node_modules

0

git reset --hard、誰のために仕事を?これが良い解決策であると言っているのではなく、私が初めて試したときにうまくいくように見えました。


上記の私のコメントは無視してください。職場で誰かがGitで何か間違ったことをしました、それは重複したフォルダーを引き起こし、私はしばらくの間気付きませんでした。ありがとう。
user1889992

0

私は私のdockerignoreを編集するという大きな間違いをしました、正しい無視ファイルを見つけた後、うまくいきました:p


0

これはよくある質問です。

.gitignore内に.historyディレクトリを配置できませんでした。どのコンボを試みても機能しませんでした。Windowsは保存のたびに新しいファイルを生成し続けますが、これらをまったく見たくありません。

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

しかし、私が気付いたのは、これが私のマシン上の私の個人的な開発環境にすぎないということです。.historyや.vscodeのようなものは私に固有なので、誰もが使用しているIDEまたはOSに基づいて独自の.gitignoreエントリを含めたのはおかしいでしょう。

だからこれは私のために働きました、単に.git / info / excludeに「.history」を追加してください

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