私の.gitignore
ファイルはGitによって無視されているようです - .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.log
とnbproject/
が追跡されていないファイルリストに現れないことを望みます。
私はこれを直すためにどこから探し始めるべきですか?
一定。 Windowsのメモ帳で.gitignoreファイルを作成しましたが、うまくいきませんでした。私がLinuxで.gitignoreファイルを見たとき、それは整理された意味のない略語のように見えました - おそらくメモ帳はASCIIではなくUnicodeでも書き出しました。
だから私は自分のLinuxマシンでそのファイルを書き直した、そして私がそれをWindowsに戻したとき、それはうまく機能する!万歳!
これまでファイルを追跡していなくても、Gitはそれらを.gitignore
に追加した後でも「知って」いるようです。
注: 最初に現在の変更をコミットしないと、変更が失われます。
それからGitリポジトリのトップフォルダから以下のコマンドを実行します。
git rm -r --cached .
git add .
git commit -m "fixed untracked files"
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
プロジェクトに別のコミットを追加しなくても、1行で.gitignore
が機能するようになります。
git rm -r --cached debug.log nbproject
これによりリポジトリからそれらが削除されますが、それでも物理的には保持されます。平易な英語では、それらに関連する変更の履歴は削除されます。また、将来のコミットでもそれらの変更を追跡しません。あなたはより良い説明を見つけるかもしれません ここ 。
この問題のもう1つの原因は、ステートメントの前の空白スペースまたはタブです。
例:
# Be aware of the following:
notWorkingIgnore.*
workingIgnore.*
そして、以下のコメントで指摘されているように、末尾のスペースも問題になる可能性があります。
# Be aware of the following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace
.gitignore
のエンコーディングは効果があることに気付きました - ファイルがUnicodeの場合は無視され、ASCIIの場合は無視されませんでした。
プロセス:
PS> git status
.gitignore
のエンコーディングをテストします。PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
他のソリューションと同様に、最初にコミットし、willコミットされていない変更を失うことに注意してください。
私はこれでより良い結果が得られました:
git rm -r --cached .
git reset HEAD --hard
git status
現在、ステータスに変更されたファイルはないはずです。
ここにあるすべての答えは実際には回避策です。 git init
を実行する.gitignoreファイルbeforeを作成する必要があります。そうでなければ、それらは既に追跡されているので、git
はあなたがそれらのファイルを無視する必要があることを決して知りません。
echo .idea/ >> .gitignore
git init
あなたが毎日開発しているのであれば、私はあなたの習慣的に無視されているファイルをあなたの~/.gitignore_global
ファイルに追加することを勧めます。このようにして、git
はあなたがどのファイル(ホームディレクトリのファイルなので "your user"を意味します)を通常知っているでしょう。
私の場合は、ファイルがすでにリポジトリに存在しているため、無視しようとしています。
これらは問題を解決するために私がしたことです:
それまでに、それらのファイルに加えた変更は無視されました。
リポジトリに既に存在するファイルは無視できないと思います。
.gitignore
を置いた ディレクトリ も調べてください。
それは あなたのプロジェクトのルート - にあるべきです :
./myproject/.gitignore
ありませんで
./myproject/.git/.gitignore
特にWindowsユーザーの場合、.gitignore
には別の問題が発生する可能性があります。あなたが.gitignore
(unity.gitignore
のような)に名前を付けるとき、Gitはそれを好きではありません。
Windowsでは、ファイル名を付けずに名前を変更しようとしていると考えられるため、常に.gitignore
、またはWindowsでは.gitignore.
と名前を付けます。
私はこの問題に遭遇しました。私の.gitignoreファイル内のコンテンツは、追跡されていないファイルのリストに引き続き表示されます。
無視ファイルを作成するためにこれを使用していました。
echo "node_modules" > .gitignore
二重引用符が問題を引き起こしていることがわかります。無視ファイルを削除してから、引用符なしでコマンドを再度使用しましたが、期待通りに機能しました。私はファイルのエンコーディングを台無しにする必要はありませんでした。私は Cmder を使ってWindows 10マシンにいます。
例:
echo node_modules > .gitignore
私はこの行を含む.gitignoreでこの問題を抱えていました:
lib/ext/
実際、このディレクトリは他の場所にあるフォルダへのシンボリックリンクであることに気付きました。
ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib
lib/ext/
行で、gitは実際に folder を探しますが、シンボリックリンクは file なので、私のlibフォルダは無視されません。
私の.gitignoreでlib/ext/
をlib/ext
に置き換えることでこれを修正しました。
特にWindowsユーザーの方へ:未追跡ファイルがあり、キャッシュされたファイルの消去/削除がうまくいかない場合。 PowerShellを開いて、.gitignoreファイルをUTF-8エンコーディングに変換してみてください。
1)$ Myfile = Get-Content ..gitignore
2)$ Myfile = |アウトファイル - エンコーディング "UTF8" .gitignore
そのディレクトリの.gitignoreファイルをエンコードするためにこれを一度だけ行う必要があります、そしてそれから、あなたが将来ファイルを編集するときはいつでもファイルが正しくエンコードされるのでそれは動作するはずです。これは、GitHubが.gitignoreファイル用の非UTF-8エンコーディングを読み込もうとしていないことが原因であると私は考えています。私が知っている限りでは、この問題はWindowsではまだ解決されていません。大したことではなく、機能していないときにデバッグするのは面倒です。
私にとっては、前の答えはどれもうまくいきませんでした。私は.gitignore
テキストを次の場所にあるexclude.txt
ファイルにコピーしなければなりませんでした
<Your-project-folder>\.git\info
完了したら、変更内容を更新すると、追跡されていないファイルはすべて削除されます。いつものようにコミットします。
私の問題は(OPが示唆したように)破損した.gitignoreファイルでした。私はそれが他のすべてが失敗するまでそれが可能であったことを信じて無視した。破損 はvi
には表示されませんでしたが、ファイルの先頭に2バイトあり、.gitignoreファイルが無視されていました。私にとっては、これらはcat .gitignore
を入力したときにのみ現れました。
��# Built application files
*.apk
*.ap_
# ...
これらがどのようにして完成したのかわかりませんが、ファイルを再作成することで問題は解決しました。破損したファイルの16進数分析により、次のことが示されました。
user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000 B.u.i.
私はこれと同じ問題を抱えていました。私は問題がCR対CR + LFの不一致であったと思います。私は(Windows 7の)CMDと次のコマンドを使って私の.gitignoreで物事を隠しました。
悪い:
echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore
等。
問題は、このコマンドはGitが改行を認識するための正しい行末マーカー(Gitが他を期待している場合はCRまたはCR + LF)を配置しないことでした。私は手動でVimの各改行を入れ替えることで問題を解決し(Vim to rescue!)、それは完全にうまくいった。
.gitignoreをメモ帳++またはVim(理想的には)で編集してみてください。ファイルが正しくフォーマットされているように見えても、改行を置き換えてみてください。それは奇妙に聞こえます、私は知っています、しかしそれは私のために働きました。 :D
それで、私の場合、認められた解決策はうまくいきませんでした。
Visual Studio 2013は、.gitignoreファイルを無視しますか?
要するに:
ms-persist.xml
を削除注意すべき点の1つは、.gitignoreファイルを正しい行末で保存しているかどうかです。
Windows:
Windowsで使用している場合は、Windowsの行末で保存していますか?すべてのプログラムがデフォルトでこれを実行するわけではありません。 Notepad ++および多くのPHPエディタはデフォルトでLinuxの行末を使用するため、ファイルはサーバー互換になります。これをチェックする簡単な方法の1つは、Windowsのメモ帳でファイルを開くことです。すべてが1行に表示される場合は、ファイルはLinuxの行末で保存されています。
Linux:
Linux環境で機能しているファイルに問題がある場合は、Emacsや nano などのエディタでファイルを開いてください。印刷できない文字が表示された場合は、ファイルはWindowsの行末で保存されています。
ここで他の答えでカバーされていない1つのトリッキーなことは、次のようにインラインコメントがあると.gitignoreファイルが機能しないことです。
foo/bar # The bar file contains sensitive data so we don't want to make this public
したがって、そのようなコメントがある場合は、次のように変更してください。
# The bar file contains sensitive data so we don't want to make this public
foo/bar
Sudo
name__コマンドで.gitignore
ファイルを編集した可能性もあります。私は同じ問題に遭遇しました、そして、コマンドを実行している間:git status
、私はまだ「無視されるべき」ファイルを見ることができました。
nano .gitignore
の代わりにSudo nano .gitignore
で編集したとき、私は正しい反映を見ることができました。
私もUbuntuで同じ問題を抱えています。端末から.gitignore
を作成しました。
touch .gitignore
他の考えられる理由 - 同時に動作しているgitクライアントのいくつかのインスタンス 。例えば "git Shell" + "GitHub Desktop"などです。
これは私に起こりました、私はメインクライアントとして "GitHubデスクトップ"を使用していました、そしてそれはいくつかの新しい.gitignore設定を無視していました:
理由 :Visual Studioのコードエディタが、同じリポジトリを開いてバックグラウンドで実行されていました。 VS Codeにはgitコントロールが組み込まれており、これはいくつかの衝突を引き起こします。
解決策 :複数の隠されたgitクライアントをダブルチェックして一度に1つのgitクライアントのみを使用する、特にgitキャッシュをクリアするとき。
私は文字通り.gitignoreと呼ばれるテキストドキュメントを作成したので、私は機能していませんでした
代わりに、テキストドキュメントを作成し、Notepad ++で開き、.gitignoreとして保存します
保存するときは、ドロップダウンから[すべてのタイプ(*。*)]を選択してください。
または、gitbashでは、単にtouch .gitignore
を使用します
WindowsのPowershellでecho "...">。gitignoreを使用して.gitignoreを作成しましたが、エクスプローラで作成することはできません。
私の場合の問題は作成されたファイルのエンコーディングでした、そして私がそれをANSIに変更した後問題は解決されました。
Notepad ++をお使いの場合は、次の手順を試してください。
Notepad ++を使用して.gitignoreファイルを開き、以下の操作を行います。
編集> EOL変換> Windowsフォーマット>保存
もう一度git statusを使って試してみて、それがうまくいったかどうかを確認してください。
私は同様の質問に答えを投稿しました ここ 。
次のコマンドで、Gitで以前にコミットされたフォルダまたはファイルを削除するだけです。そうすればgitignoreファイルは正しいファイルを反映するでしょう。
git rm -r -f "folder or files insides"
私にとってそれはまだ別の問題でした。私の.gitignoreは、無視しないように指示したもの以外はすべて無視するように設定されています。こんな感じ:
/*
!/content/
これは明らかに私がgitignore自体を無視するようにgitに言っていることを意味しています。私が.gitignoreを追跡していない限り、これは問題ではありませんでした。しかし、ある時点で、私は.gitignore自体をコミットしました。これにより、.gitignoreが正しく無視されるようになりました。
もう1行追加して修正しました。
/*
!/content/
!.gitignore