web-dev-qa-db-ja.com

すべてのフォルダーおよびサブフォルダーにあるすべての.DS_Storeファイル

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

これをどのように修正しますか?

430
vickyqiu

私が抱えている問題は、以前のいくつかのコミットで、誤って.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を削除できます。

Felt tip:.DS_Storeファイルを含めたくないと思われるので、グローバルルールを作成します。まず、グローバルな.gitignoreファイルをどこかに作成します。 echo .DS_Store >> ~/.gitignore_global。今すぐgitにそれをすべてのリポジトリのために使うように言う:git config --global core.excludesfile ~/.gitignore_global

このページは私があなたの質問に答えるのを助けました: https://help.github.com/articles/ignoring-files

541
Edward Newell

サブディレクトリの**/.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
285
ronald8192

あなたの .gitignore ファイルは次のようになるはずです。

# Ignore Mac DS_Store files
.DS_Store

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

79
Yarin

.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

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

65
drjorgepolanco

ステップ1、すべての*.DS_storeファイルを削除して下さい。走れる人

git rm -f *.DS_Store

しかし、rm -fはタイプミスがあると少し危険になることがあります。ステップ2:追加

*.DS_Store
.DS_Store

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

20
travelingbones

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

11
Andrew Wilhelm

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

9
Jacob

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

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

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

ステップ:3).gitignore git add .gitignoreで変更をコミットします

5
vishnu
  1. $ git rm ./*.DS_Store - gitからすべての.DS_Storeを削除
  2. $ echo \.DS_Store >> .gitignore - 将来.DS_Storeを無視します

コミット&プッシュ

0
mate.gwozdz