.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
を削除できます。
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
サブディレクトリの**/.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
あなたの .gitignore ファイルは次のようになるはずです。
# Ignore Mac DS_Store files
.DS_Store
スラッシュを含めない限り、それはすべてのディレクトリのファイル名と照合されます。 (from here )
.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 ...)
ステップ1、すべての*.DS_store
ファイルを削除して下さい。走れる人
git rm -f *.DS_Store
しかし、rm -f
はタイプミスがあると少し危険になることがあります。ステップ2:追加
*.DS_Store
.DS_Store
.gitignoreに。これは私のために働いた!
Edward Newellが最初の回答で述べたように、ローカルの.DS_storeファイルを維持するためにaucoの回答に--cached
フラグを追加することもできます。変更されたコマンドは次のようになります。find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers and thanks!
.gitignoreファイルに*.DS_Store
を追加してください。それは私にとっては完璧に機能します
ステップ:1)このコマンドを使用して既存のファイルを削除します
見つけます。 -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
ステップ:2).gitignoreファイルに.DS_Storeを追加します
ステップ:3).gitignore git add .gitignoreで変更をコミットします
$ git rm ./*.DS_Store
- gitからすべての.DS_Storeを削除$ echo \.DS_Store >> .gitignore
- 将来.DS_Storeを無視しますコミット&プッシュ