.gitignoreファイルに.DS_Storeを追加しましたが、すべてのフォルダーとサブフォルダーではなく、ルートディレクトリの.DS_Storeのみを無視しているようです。
どうすれば修正できますか?
.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
このページはあなたの質問に答えるのに役立ちました。
追加**/.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
git rm --cached your_file最初に使用
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch:から、stackoverflow.com/questions/18393498/...
-fあなたはのrelaventフォルダ内のファイルを開いている場合は必要とされている:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
.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 ...)
*か**あなたが達成したいのかによって異なります。これは、ディレクトリをナビゲートする方法をシェルに伝える方法です。このstackoverflowの答えはそれを完全に説明していますstackoverflow.com/a/28199633/4092170
あなたの.gitignoreのファイルには、次のようになります。
# Ignore Mac DS_Store files
.DS_Store
スラッシュを含めない限り、すべてのディレクトリのファイル名と照合されます。(ここから)
git rm --cached path/to/file/here
手順1、すべての*.DS_storeファイルを削除します。走れる
git rm -f *.DS_Store
ただしrm -f、タイプミスがあると少し危険になる可能性があることに注意してください。ステップ2:追加
*.DS_Store
.DS_Store
.gitignoreに。これは私のために働いた!
--cachedEdward Newellが最初の回答で述べたように、ローカルの.DS_storeファイルを維持するためにaucoの回答にフラグを追加することもできます。変更されたコマンドは次のようにfind . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatchなります。
$ git rm ./*.DS_Store -gitからすべての.DS_Storeを削除します$ echo \.DS_Store >> .gitignore -今後は.DS_Storeを無視コミットしてプッシュ