726

.gitignore ファイルに .DS_Store を追加しましたが、すべてのフォルダーとサブフォルダーではなく、ルート ディレクトリの .DS_Store のみを無視しているようです。

これを修正するにはどうすればよいですか?

4

11 に答える 11

857

あなたが抱えている問題は、以前のコミットで、誤って.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

このページは、あなたの質問に答えるのに役立ちました。

于 2013-10-10T15:22:38.913 に答える
98

.gitignoreファイルは次のようになります。

# Ignore Mac DS_Store files
.DS_Store

スラッシュを含めない限り、すべてのディレクトリのファイル名と照合されます。(ここから)

于 2015-03-25T16:06:19.353 に答える
51

これを新しい行に配置するだけです.gitignore

**/.DS_Store

git ドキュメントから

  • 先頭の "**" に続くスラッシュは、すべてのディレクトリで一致することを意味します。たとえば、"**/foo" は、パターン "foo" と同じように、任意の場所のファイルまたはディレクトリ "foo" に一致します。「**/foo/bar」は、ディレクトリ「foo」の直下にあるファイルまたはディレクトリ「bar」と一致します。
于 2020-08-21T05:31:12.250 に答える
27

ステップ 1、すべての*.DS_storeファイルを削除します。走ることができる

git rm -f *.DS_Store

rm -fただし、タイプミスがあると少し危険になる可能性があることに注意してください。ステップ 2: 追加

*.DS_Store
.DS_Store

.gitignore に。これは私のために働いた!

于 2016-01-12T19:42:23.913 に答える
14

*.DS_Store.gitignore ファイルに追加します。それは私にとって完璧に機能します

于 2015-02-04T07:47:37.490 に答える
13

--cachedEdward Newell が元の回答で述べたように、auco の回答にフラグを追加して、ローカルの .DS_store ファイルを維持することもできます。変更されたコマンドは次のようにfind . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatchなります。

于 2014-10-04T05:48:10.690 に答える