1662

ファイルがGit.gitignoreに無視されているようです -.gitignoreファイルが破損している可能性はありますか? Git が期待するファイル形式、ロケール、カルチャはどれですか?

私の.gitignore

# This is a comment
debug.log
nbproject/

からの出力git status:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

追跡されていないファイルのリストに表示されないようにしますdebug.lognbproject/

これを修正するには、どこから始めればよいですか?

4

37 に答える 37

3403

これまでファイルを追跡していなかったとしても、Git はファイルを に追加した後でもそれらについて「認識」できるようです.gitignore

警告:最初に現在の変更をコミットまたは隠してください。そうしないと、それらが失われます。

次に、Git リポジトリの最上位フォルダーから次のコマンドを実行します。

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
于 2012-07-12T12:20:59.183 に答える
354

Git が.gitignoreファイルに加えた変更を認識していないように思われる場合は、次の点を確認してください。

  • .gitignoreローカル ファイルに干渉する可能性のあるグローバルファイルが存在する可能性があります
  • .gitignore ファイルに何かを追加するときは、これを試してください。

    git add [uncommitted changes you want to keep] && git commit
    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"
    
  • .gitignore ファイルから何かを削除し、上記の手順が機能しない可能性がある場合、上記の手順が機能しないことがわかった場合は、次のことを試してください

    git add -f [files you want to track again]
    git commit -m "Refresh removing files from .gitignore file."
    
    // For example, if you want the .java type file to be tracked again,
    // The command should be:
    //     git add -f *.java
    
于 2015-09-03T13:54:04.313 に答える
218

修理済み。OK、Windows のメモ帳で .gitignore ファイルを作成しましたが、機能しませんでした。Linux で .gitignore ファイルを表示したところ、まとまりのない意味不明なファイルのように見えました。おそらく、メモ帳が ASCII や 8 ビットではなく Unicode で書き出されていたのでしょう。

そこで、Linux ボックスのファイルを書き直しました。それを Windows に戻すと、問題なく動作します。万歳!

于 2012-07-12T12:30:50.053 に答える
119

.gitignoreプロジェクトに別のコミットを追加しなくても、想定どおりに機能させるには 1 行で十分です。

git rm -r --cached debug.log nbproject

これにより、それらはリポジトリから削除されますが、物理的には保持されます。簡単に言えば、それらに関連する変更の履歴を削除し、将来のコミットでそれらの変更を追跡しません。ここでより良い説明を見つけることができます。

于 2014-03-19T23:40:24.987 に答える
41

のエンコーディングが影響していることに気付きまし.gitignoreた。ファイルが Unicode の場合は無視され、ASCII の場合はそうではありませんでした。

プロセス:

  1. ステータスを確認します:PS> git status
  2. Get-FileEncodingの関数を作成する
  3. Test.gitignoreのエンコーディング:PS> Get-FileEncoding .gitignore
  4. エンコードを ASCII に変更します。PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. 確認:PS> git status
于 2015-08-13T21:14:28.747 に答える
37

他のソリューションと同様に、最初にコミットし、コミットされていない変更が失われることに注意してください。

これでより良い結果が得られました:

git rm -r --cached .
git reset HEAD --hard
git status

現在、ステータスには変更されたファイルが含まれていないことに注意してください。

于 2016-11-14T23:13:08.117 に答える
20

ここでのすべての回答は、実際には回避策です。を実行する前に、.gitignore ファイルを作成する必要がありますgit init。そうgitしないと、これらのファイルは既に追跡されているため、無視する必要があることがわかりません。

echo .idea/ >> .gitignore
git init

日常的に開発する場合は、習慣的に無視されるファイルをファイルに追加することをお勧めし~/.gitignore_globalます。そうgitすれば、あなた(ホームディレクトリ内のファイルであるため、「あなたのユーザー」を意味します)が通常無視するファイルがすでにわかります。

于 2015-11-25T21:21:08.230 に答える
16

を置いたディレクトリも確認してください.gitignore

プロジェクトのルートにある必要があります:

./myproject/.gitignore

ありませんで

./myproject/.git/.gitignore
于 2014-10-14T06:32:07.833 に答える
5

OK、私の場合、受け入れられた解決策は機能しませんでした。機能したものは次のとおりです。

Visual Studio 2013 は .gitignore ファイルを無視していますか?

要するに:

  • Visual Studio を閉じます。
  • .git フォルダーに移動します。
  • 消去ms-persist.xml
  • Visual Studio を再起動します
于 2016-03-29T10:41:30.810 に答える
5

私はこれと同じ問題を抱えていました。問題は CR と CR+LF の不一致だったと思います。CMD(Windows 7上)と次のコマンドを使用して、.gitignoreに物を隠しました:

悪い:

echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore

等。

問題は、このコマンドが、Git が改行を認識するための正しい行末マーカーを配置しないことでした (Git が他方を想定している場合に、CR または CR+LF のいずれか)。Vimの各改行を手動で置き換えることで問題を解決し(Vimが助けになりました!)、完全に機能しました。

.gitignore を Notepad++ または Vim (理想的には) で編集してみてください。ファイルが正しくフォーマットされているように見えても、改行を置き換えてみてください。奇妙に聞こえますが、私にとってはうまくいきました。:D

于 2015-02-21T06:32:39.580 に答える
3

また、確認すべきことの 1 つ: .gitignore ファイルを正しい行末で保存していますか?

ウィンドウズ:

Windows で使用している場合、Windows の行末で保存していますか? すべてのプログラムがデフォルトでこれを行うわけではありません。Notepad++ および多くの PHP エディターでは、デフォルトで Linux の行末が使用されるため、ファイルはサーバーと互換性があります。これを確認する簡単な方法の 1 つは、Windows のメモ帳でファイルを開くことです。すべてが 1 行に表示される場合、ファイルは Linux の行末で保存されています。

Linux:

Linux 環境でファイルの動作に問題がある場合は、Emacs やnanoなどのエディターでファイルを開きます。印刷できない文字がある場合、ファイルは Windows の行末で保存されています。

于 2012-11-13T02:21:22.253 に答える
2

For me it was yet another problem. My .gitignore file is set up to ignore everything except stuff that I tell it to not ignore. Like such:

/*
!/content/

Now this obviously means that I'm also telling Git to ignore the .gitignore file itself. Which was not a problem as long as I was not tracking the .gitignore file. But at some point I committed the .gitignore file itself. This then led to the .gitignore file being properly ignored.

So adding one more line fixed it:

/*
!/content/
!.gitignore
于 2018-09-04T19:41:28.063 に答える
2

It is also a possibility that you edited the .gitignore file with a sudo command. I encountered the same issue and while executing the commands: git status, I could still see the "should be ignored" files.

Upon editing with nano .gitignore instead of sudo nano .gitignore, I could see the correct reflection.

于 2018-10-22T06:15:21.523 に答える
2

私もUbuntuで同じ問題を抱えています.gitignore。ターミナルから作成しましたが、うまくいきました

touch .gitignore

于 2019-07-20T00:01:55.237 に答える
0

My 30 cent trick:

  1. Pl clean your directory. git clean -f (I tried git rm -r --cached . but it did not work for me.)

Warning: git clean -f will remove untracked files, meaning they're gone for good since they aren't stored in the repository. Make sure you really want to remove all untracked files before doing this.

May be you can try git clean -xdf which removes ignored dirs and untracked files

  1. Now bring HEAD to the current position git reset HEAD --hard.
  2. check git status.

  3. Now create .gitignore which in my cases wanted to ignore a folder called data. So I wrote /data/ (initial / is for file/folder, later / is for folder only).

  4. Now do git add, commit, and push.
于 2020-04-15T09:50:32.953 に答える
0

この投稿や他の投稿でさまざまな提案を試しましたが (例: Gitignore が機能しないgitignore が機能しない - 無視されますか? )、.gitignore.txt ファイルに含まれるファイル/フォルダーを git に無視させることができませんでした。

以前にコミットされたファイル/ディレクトリが追跡されないという問題に対処する以前の回答の多くとは異なり、私の場合、最初のコミットを行うgit initにこの問題に遭遇したことを強調する必要があります(つまり、実行のみが続きました)によるgit status)。

他にも有望な提案がいくつかありました。

  • テキスト ファイルのエンコーディングは、UTF ではなく ANSI にする必要があります。たとえば、エンコーディング -> Notepad++ の ANSI
  • Windows の EOL 変換。例: Edit -> EOL Conversion -> Notepad++ の Windows
  • .gitignore.txt 内の項目の先頭または末尾の空白はありません
  • フォルダーを定義する際に先頭の「/」を使用しない

しかし、どれも適用できなかったり、私の問題を解決したりしませんでした。

.gitignore.txt ファイルを作成するさまざまな方法を試した後、それを機能させる方法を理解することができましたが、その理由を理解しているとは言えません。誰かが説明を提供できるかどうかを知ることは興味深いでしょう。

以前の回答が問題に対処していないことに気付くかもしれない人のために、私が試したこと、機能しなかったこと、機能したことを説明します。そうすることで、その理由も明らかになることを願っています。Windows 10を使用していることに注意してください。

試行 #1 (失敗)

Windows エクスプローラーで新しい txt ファイルを作成する:

  1. (プロジェクトフォルダ内)右クリック→新規→テキストドキュメント
  2. ファイル名を「.gitignore」に変更
  3. Notepad ++でファイルを開き、入力したファイル/ディレクトリ名を無視する
  4. エンコーディング -> ANSI [注 1]、変更を保存

実行しましgit statusたが、無視したいファイル/フォルダーが追跡されていないと表示されました。Windows エクスプローラーでファイルのプロパティを確認しました。予想どおり、ファイル名は「.gitignore」で、ファイルの種類は「テキスト ドキュメント ( .txt )」でした。

注1

いくつかの寄稿者は、エンコーディングは (UTF ではなく) ANSI でなければならないと述べています。Notepad++ では、エンコーディング -> ANSI を実行するか、エンコーディング -> ANSI に変換して保存し、ファイルを閉じてから (メモ帳 ++ で) 再度開くかに関係なく、エンコーディングをチェックすると、常に UTF- が報告されることがわかりました。 8. これは、最終的に機能した .gitignore.txt ファイルにも当てはまりました。

試行 #2 (失敗)

Notepad++ で新しい txt ファイルを作成する:

  1. Notepad++で新しいファイルを作成し、無視する項目を入力
  2. 「.gitignore.txt」として保存し、「ファイルの種類」を「通常のテキスト ファイル」(デフォルト)から「すべてのタイプ」に変更し、「拡張子を追加」ボックスのチェックを外しました(デフォルトでチェック)。

実行git statusすると、以前と同様に、すべてのファイル/ディレクトリが追跡されていないファイルの下にリストされました。以前と同様に、ファイル名は「.gitignore」で、ファイルの種類は「テキスト ドキュメント ( .txt )」でした。

試行 #3 (成功)

同じファイル (.gitignore.txt) を Notepad++ で開いたままにします。

  1. 「.gitignore」として保存すると、「ファイルの種類」に「通常のテキストファイル」が選択され、「拡張子を追加」ボックスが自動的にチェックされます

作成されたファイルが Windows エクスプローラーで名前がないように見えることに気付きました。ファイルのプロパティを確認しました。ファイル名フィールドは空白で、ファイルの種類は「テキスト ドキュメント ( .gitignore )」でした。Windows エクスプローラー ([表示] -> [ファイル名拡張子]) で [ファイル名拡張子] にチェックマークを付けると、「名前のない」ファイルに「.gitignore」拡張子が表示されます。

実行git statusしたところ、今回は無視したかったファイル/フォルダーが追跡されていないファイルとしてリストされていませんでした-成功!

Notepad++ でファイルを開くと、エンコーディングが UTF-8 で、ファイル名が ".gitignore" として識別されることに気付きました (Windows エクスプローラーとは異なります)。

そのため、txt ファイルの作成方法には微妙な点があるようです。これは、Windows 特有の特性ではないでしょうか。

于 2022-01-06T21:10:18.093 に答える