.gitignore ファイルに .DS_Store を追加しましたが、すべてのフォルダーとサブフォルダーではなく、ルート ディレクトリの .DS_Store のみを無視しているようです。
これを修正するにはどうすればよいですか?
あなたが抱えている問題は、以前のコミットで、誤って.DS_Store
ファイルをリポジトリに追加したことだと思います。もちろん、ファイルがリポジトリで追跡されると、該当する .gitignore ファイルのエントリと一致したとしても追跡され続けます。
.DS_Store
リポジトリに追加されたファイルを手動で削除する必要があります。使用できます
git rm --cached .DS_Store
削除すると、git はそれを無視する必要があります。.gitignore
ルートファイルには次の行のみが必要です: .DS_Store
. ピリオドをお忘れなく!
git rm --cached .DS_Store
.DS_Store
現在のディレクトリからのみ削除します。使用できます
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
.DS_Stores
リポジトリからすべてを削除します。
ヒント:ファイルを含めたくない場合は.DS_Store
、グローバル ルールを作成してください。まず、.gitignore
どこかにグローバルファイルを作成します。
echo .DS_Store >> ~/.gitignore_global
すべてのリポジトリで使用するように git に指示します。
git config --global core.excludesfile ~/.gitignore_global
このページは、あなたの質問に答えるのに役立ちました。
.gitignoreファイルは次のようになります。
# Ignore Mac DS_Store files
.DS_Store
スラッシュを含めない限り、すべてのディレクトリのファイル名と照合されます。(ここから)
これを新しい行に配置するだけです.gitignore
**/.DS_Store
- 先頭の "**" に続くスラッシュは、すべてのディレクトリで一致することを意味します。たとえば、"**/foo" は、パターン "foo" と同じように、任意の場所のファイルまたはディレクトリ "foo" に一致します。「**/foo/bar」は、ディレクトリ「foo」の直下にあるファイルまたはディレクトリ「bar」と一致します。
ステップ 1、すべての*.DS_store
ファイルを削除します。走ることができる
git rm -f *.DS_Store
rm -f
ただし、タイプミスがあると少し危険になる可能性があることに注意してください。ステップ 2: 追加
*.DS_Store
.DS_Store
.gitignore に。これは私のために働いた!
*.DS_Store
.gitignore ファイルに追加します。それは私にとって完璧に機能します
--cached
Edward Newell が元の回答で述べたように、auco の回答にフラグを追加して、ローカルの .DS_store ファイルを維持することもできます。変更されたコマンドは次のようにfind . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
なります。