.gitignoreすべてのフォルダとサブフォルダ内のすべての.DS_Storeファイル


561

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

どうすれば修正できますか?



どのように正確に.gitignoreに追加しましたか?それはすべてのディレクトリで動作するはずです(私のために行います)。
Thilo 2013

それも私のために働いています。(プラットフォーム固有の)改行が必要な場合でも、ファイルの最後にあるときに試してみましたが、階層のどの部分の.DS_Storeディレクトリも変更されなかったため、無視されました。
enorl76 2013

私が理解している質問は、すべてのサブディレクトリで手動でこれを行わずに、すべてのサブディレクトリで.DS_Storeのすべての発生を簡単に無視する方法でした。私も同じ問題を抱えていました。以下の答えは、それを解決する方法を示しています(最後の2段落)。
petrsyn 2013年

回答:


648

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

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


41
最後の2段落でこの質問に答えます。ありがとう。
petrsyn 2013年

70
´´git rm --cached .DS_Store´´は、現在のディレクトリから.DS_Storeを1つだけ削除します。´´findを使用します。-name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch´´すべての.DS_Storesをリポジトリから削除
auco

4
無視すべき他の一般的なファイルのリストは便利かもしれません
地球理論

14
グローバルルールIMOを使用するのは悪い考え:複数のユーザー/マシン間でグローバル構成を維持しようとすることは決して機能しません-リポジトリ自体にリポジトリを管理するルールが必要です。これに同意する
Yarin

15
私はあなたに同意しません。(洞察に満ちていると思うので、私はあなたのコメントに賛成票を投じましたが)グローバルにする場合、すべてのMacユーザーはそれを行う必要がありますが、1回だけです。リポジトリ全体で行う場合は、すべてのリポジトリでそれを行う必要があります。あなたのことは知りませんが、いつも新しいレポを作成しています。これをグローバルに行うことで、問題を一度に解決できます。
エドワードニューウェル2015年

356

追加**/.DS_Store.gitignoreサブディレクトリの


.DS_Storeすでにコミットされている場合:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

すべてのリポジトリにそれらを無視するには、次の(時にはそれが命名._.DS_Store

echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

まだ私のリポジトリにアップロードされていますか?
Freddy Sidauruk、2016年

@FreddySidaurukがgit rm --cached your_file最初に使用
ronald8192

@FreddySidaurukはする必要がありますfind . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch:から、stackoverflow.com/questions/18393498/...
ronald8192

1
それは追加のようだ-fあなたはのrelaventフォルダ内のファイルを開いている場合は必要とされている:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
メフメト・カプラン

158

.DS_Storeがgitリポジトリに追加されたことがない場合は、単に.gitignoreファイルに追加してください。

ない場合は、というファイルを作成します

.gitignore

アプリのルートディレクトリに次のように記述します。

**/.DS_Store

初期化。これにより、.DS_Storeファイルがgitに忍び込むことは決してありません。

しかし、それがすでにある場合は、ターミナルに書き込みます。

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

次に、変更をコミットしてプッシュし、リモートリポジトリから.DS_Storeを削除します。

git commit -m "Remove .DS_Store from everywhere"

git push origin master

そして今度は.DS_Storeを.gitignoreファイルに追加してから、もう一度コミットして最後の2つのコードでプッシュします(git commit ...、git push ...)


3
なぜ二重アスタリスクなのですか?どういう意味ですか?
MilanG 2017年

1
@MilanGそれは基本的に「このディレクトリとすべてのサブディレクトリで検索」を意味するキーワードです。
lachie_h

1
二重アスタリスクが何を表すのかを完全に説明しているのかはわかりません。ワイルドカードです。でした***あなたが達成したいのかによって異なります。これは、ディレクトリをナビゲートする方法をシェルに伝える方法です。このstackoverflowの答えはそれを完全に説明していますstackoverflow.com/a/28199633/4092170
El'Magnifico

**隠し(./)ディレクトリに一致することは決してありません:facelessuser.github.io/wcmatch/glob
Jonathan

これは実際に機能します...回答
済み

85

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

# Ignore Mac DS_Store files
.DS_Store

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


まだレポにアップグレードされています
Freddy Sidauruk '24 / 11/16

@FreddySidaurukその後、実行する必要がありますgit rm --cached path/to/file/here
Sgnl 2018年

23

手順1、すべての*.DS_storeファイルを削除します。走れる

git rm -f *.DS_Store

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

*.DS_Store
.DS_Store

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



11

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


5

手順:1)このコマンドを使用して既存のファイルを削除します

見つける -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

ステップ:2).gitignoreファイルに.DS_Storeを追加します

ステップ:3).gitignoreで変更をコミットしますgit add .gitignore git commit -m "removed .DS_Store"


3
  1. $ git rm ./*.DS_Store -gitからすべての.DS_Storeを削除します
  2. $ echo \.DS_Store >> .gitignore -今後は.DS_Storeを無視

コミットしてプッシュ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.