私のgitリポジトリでは、ステージング領域に、元に戻す、削除する、コミットすることを拒否している奇妙なファイルがあります-基本的に私はそれを消えさせることはできません..
このファイルは、何年もの間フォルダ内にある古いOS9ファイルである必要があります。
数日前にファイルシステムでファイルを削除したので、gitはIconr
の削除を追跡しています。
しかし、それはそこで立ち往生しています。
SourceTree(私のgit UIクライアント)を介して取得するエラーは
致命的:pathspec'folder/Iconr 'はどのファイルとも一致しませんでした
そのファイルについてgit 完全に忘れるを作成する方法はありますか?
より正確なエラーメッセージを表示するには、コマンドラインに戻ることをお勧めします。
そこで、そのファイルの削除をリポジトリに登録するために、git add -u
、続いてgit commit
を試すことができます。
例として、「 git status
はファイルが削除されたと言いますが、git rm
はerror: pathspec '…' did not match any files
"と言います」を参照してください。
Git cleanが何を与えるかをプレビューすることもできます:git clean -d -x -n
( " Gitでフォルダーを削除しようとすると「pathspec」がないのはなぜですか? "で説明されています)
もう1つの問題は、そのファイルが現在のブランチではまったく追跡されていないが、別のブランチで追跡されている場合です。それが事実であるかどうかを確認するには、 その答え を参照してください。
行を追加する
Icon?
.gitignoreに私のために働いた。
一般的な回避策として、このブログエントリで説明されているように.gitignore
ファイルを編集してIcon\r
ファイルを完全に無視することができます: Gitのヒント:.gitignoreのアイコン\ rを無視する
Icon^M
のようなファイルは、ほとんどの場合、フォルダを強調表示している Folderol などの外部アプリによって作成されます。 。
それを実行しているアプリを削除するか、.gitignore
ファイルで無視する必要があります。
printf "Icon\r\r" >> .gitignore
これはシェルコマンドです。または、Icon??
として追加するか、^M
特殊文字を次のように再現できます。 Control-V と打つ Enter。
関連: gitでアイコンを無視する方法
この変更をリポジトリにコミットしたくない場合は、グローバル.gitignore
に追加するか、.git/info/exclude
に追加してください。
参照: Gitの使用/ファイルの無視 。
ファイル自体を削除するには、次のことを試してください。
find . -type f -name 'Icon?' -print -delete
または、ステージングされていないのがそれらだけの場合は、git clean -f
を実行します。
SourceTreeで「Iconr」と表示されるのは実際には「Icon\r」です。ここで、\ rは16進値0x0dです。
.gitignoreファイル名パターンマッチングは、POSIX正規表現と比較して制限されています。 「Icon\r」や「Icon\x0d」などの正規表現パターンは、SourceTreeでは機能しませんでした。
Simple Ignore:。gitignoreファイルにIcon?
パターンを追加すると、SourceTreeで「Iconr」ファイルが無視されるように機能します。
警告:Icon?
は1文字のワイルドカードである?
を使用します。したがって、「Icon\r」、「icona」、「icon3」などのファイルは、Icon?
パターンで無視されます。したがって、必要に応じて、Icon01
、icon02
、iconaa
の代わりにファイル名Icon1
、icon2
、icona
を使用してください。そのようなファイルをgitに追加します。
Precise Ignore:正確なIconr
ファイル名は、binhexエディターでは無視できます。
Binhexエディターで、0a 49 63 6e 6e 0d 0d 0a
を追加します。余分な0aは、後でunixファイルを編集するために「Icon\r\r」を囲むための改行です。
警告:正確な49 63 6e 6e 0d
を使用する場合は、\ rを\ nに置き換えないように注意してください。つまり、このアプローチで行区切り記号を自動置換するように設定されたテキストエディタで.gitignoreを編集しないでください。
注:Simple Ignore Icon?
は、ほとんどのユースケースで便利で十分です。SourceTreeを終了して再起動し、表示します。変更が有効になります。 macOS git
は、デフォルトでは大文字と小文字を区別しません。