どうすればGitレポジトリからいらないMac OS Xの.DS_Store
ファイルを削除できますか?
リポジトリから既存のファイルを削除します。
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
行を追加
.DS_Store
.gitignore
ファイルへ。リポジトリのトップレベルにあります(またはまだ存在しない場合は作成されます)。あなたはトップディレクトリのこのコマンドでこれを簡単にすることができます
echo .DS_Store >> .gitignore
それから
git add .gitignore
git commit -m '.DS_Store banished!'
Benzadoとwebmatの答えを組み合わせて、git rm
で更新し、リポジトリにないファイルが見つかった場合でも失敗せず、どのユーザーにとっても一般的にペーストできるようにします。
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
この問題に取り組むための最善の解決策は、あなたのシステム上のすべてのgitリポジトリからこれらのファイルをグローバルに無視することです。これは、次のようなグローバルgitignoreファイルを作成することによって実行できます。
vi ~/.gitignore_global
次のようなファイルを無視するための規則を追加します。
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.Zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
それでは、このファイルをグローバルgitの設定に追加してください。
git config --global core.excludesfile ~/.gitignore_global
編集する
アプリケーション資産としてコミットする必要がある可能性があるため、アイコンを削除しました。
状況によっては、グローバルにいくつかのファイルを無視したいこともあります。私にとっては、.DS_Storeはそのうちの1つです。方法は次のとおりです。
git config --global core.excludesfile /Users/mat/.gitignore
(または任意のファイル)
それからリポジトリの.gitignoreのようにファイルを編集します。絶対パスを使用する必要があると思います。
変更が段階的に行われているためにファイルを削除できない場合
git rm --cached -f *.DS_Store
端末を開き、「cd <ProjectPath>」と入力します。
既存のファイルを削除します。find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
これを追加.DS_Store
「ctrl + x」と入力します。
「y」と入力
ファイルを保存するために入力してください
git add .gitignore
git commit -m '.DS_Store removed.'
上記のgit-rmをgit rmに変更して動作させる必要がありました。
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
上の投票の答えは素晴らしいですが、私のようなルーキーを手助けする、ここに.gitignoreファイルを作成し、それを編集し、それを保存し、gitに既に追加したファイルを削除し、そしてGithubにファイルをプッシュする方法があります。
.gitignoreファイルを作成します
.gitignoreファイルを作成するには、指定された名前で空のファイルを作成するファイルをtouch
にするだけです。次のコマンドを使用できるように、.gitignoreという名前のファイルを作成します。
touch .gitignore
ファイルを無視する
今度はDS Storeファイルを無視するようにgitに指示する行を.gitignoreに追加する必要があります。ナノエディタを使ってこれを行うことができます。
nano .gitignore
それはそれから抜け出す方法についての指示が含まれているのでナノはいいです。 (Ctrl - O 保存する、 Ctrl - X 出る)
無視するいくつかの一般的なファイルをリストしたこの Github Gist からいくつかのアイデアをコピーして貼り付けます。この質問に答えるための最も重要なものは、
# OS generated files #
######################
.DS_Store
.DS_Store?
#はコメントであり、ファイルが大きくなるにつれて整理しやすくなります。
この Githubの記事 にも、いくつかの一般的なアイデアとガイドラインがあります。
すでにgitに追加されているファイルを削除します
最後に、ディレクトリからそれらのDS Storeファイルを実際に削除する必要があります。
トップ投票の答えからこの素晴らしいコマンドを使ってください。これはあなたのディレクトリ内のすべてのフォルダを通過し、gitからそれらのファイルを削除します。
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
.gitignoreをGithubまでプッシュします
最後のステップでは、実際に.gitignoreファイルをコミットする必要があります。
git status
git add .gitignore
git commit -m '.DS_Store banished!'
git-rm
を使用してそれらを削除してから、.gitignore
に.DS_Storeを追加して再度追加されないようにします。また、 blueharvest を使用して、それらがまとめて作成されないようにすることもできます。
既存のファイルを削除するには、このコマンドを使用します。
find . -name '*.DS_Store' -type f -delete
それから.DS_Store
を.gitignore
に追加します
DS_Storeファイルをすべてのフォルダとサブフォルダに削除したい場合は、
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
無視してください。
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 1.7.4.4を実行しているMac 10.7システム上のものです。
見つけて削除します。
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
グローバルなcore.excludesファイルを設定することで、すべてのリポジトリで.DS_Storeをグローバルに無視します。
まず、ファイルを作成します(まだ存在していない場合)。
touch ~/.gitignore
その後、次の行を追加して保存します。
.DS_Store
グローバルにファイルを尊重するようにgitを設定します。
git config --global core.excludesfile ~/.gitignore
snipplr の次の行は、ローカルの変更があるものも含めて、すべての.DS_Store
を消去するのが最善です。
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
オプション、とにかく再現されるのであなたのローカルの.DS_Store
を保存します。
そして、上で述べたように、プロジェクトのルートにある.gitignoreファイルに.DS_Store
を追加します。それからそれはもはやあなたの目には見えなくなるでしょう(レポ)。
何らかの理由で、上記のどれも私のMacでは動作しませんでした。
私の解決策はターミナルランからです:
rm .DS_Store
その後、次のコマンドを実行します。
git pull Origin master
私はパーティーに少し遅れています、しかし私は良い答えを持っています。 .DS_Storeファイルを削除するには、ターミナルウィンドウから次のコマンドを使用しますが、 'find'を使用してファイルを削除するときは十分に注意してください。 -nameオプションと一緒に特定の名前を使用することは、それを使用するためのより安全な方法の1つです。
cd directory/above/affected/workareas
find . -name .DS_Store -delete
単に前後にそれらをリストしたい場合は、 " - 削除"を省略することができます。それは彼らが去ったことをあなたに安心させるでしょう。
〜/ .gitignore_globalアドバイスに関しては、ここで注意してください。そのNiceファイルを各作業領域の最上位レベル内の.gitignoreに配置してコミットすると、リポジトリを複製した人がその使用の恩恵を受けることになります。
これは動作します:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
.DS_Store
を含む、名前が._.DS_Store
で終わるすべてのファイルを削除します。
これは私にとってはうまくいきました。上からの2つの答えの組み合わせです。
リポジトリを初期化するときは、次の内容を含むgitコマンドをスキップしてください。
-u
それは問題にならないはずです。
これをあなたのファイルに追加する
#Ignore folder mac
.DS_Store
これを保存してコミットする
git add -A
git commit -m "ignore .DS_Store"
そして今、あなたはすべてのあなたのコミットのためにこれを無視します
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git Push Origin master --force
無視されたファイルを削除します。
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
この問題を解決するためのいくつかの解決策があります。 .DS_Storeファイルが作成されないようにするには、フォルダの表示にOS X Finderを使用しないでください。フォルダを表示する別の方法は、UNIXのコマンドラインを使用することです。 .DS_Storeファイルを削除するには、DS_Store Terminatorというサードパーティ製品を使用できます。システム全体から.DS_Storeファイルを削除するには、UNIXシェルコマンドを使用できます。アプリケーションからターミナルを起動します。ユーティリティUNIXシェルプロンプトで、次のUNIXコマンドを入力します。Sudo find/-name ".DS_Store" -depth -exec rm {} \;パスワードの入力を求められたら、Mac OS Xの管理者パスワードを入力してください。
このコマンドは、ファイルシステムのルート(/)からマシン全体に至るまでのすべての.DS_Storeを見つけて削除します。このコマンドをスケジュールされたタスクとして実行するように設定するには、次の手順に従います。アプリケーションからユーティリティを起動します。ユーティリティUNIXシェルプロンプトで、次のUNIXコマンドを入力します。
Sudo crontab -eパスワードの入力を求められたら、Mac OS Xの管理者パスワードを入力します。 viエディタに入ったら、キーボードのIを1回押して、次のように入力します。
15 1 * * * root find/-name ".DS_Store" -depth -exec rm {} \;
これはcrontabエントリと呼ばれ、次の形式になります。
分時間DayOfMonth月DayOfWeekユーザーコマンド。
Crontabエントリは、コマンドがrootと呼ばれるアカウントによって毎日午前1時15分にシステムによって自動的に実行されることを意味します。
コマンドはfindから最後まで始まります。システムが稼働していない場合、このコマンドは実行されません。
エントリを保存するには、Escキーを1回押してから、Shift + z + zを同時に押します。
注:ステップ4の情報はviエディター専用です。
.DS_STORE
をローカルで削除する必要はありません
.gitignore
ファイルに追加するだけです
.gitignoreファイルは、プロジェクトで無視するファイルまたはフォルダーをGitに伝える単なるテキストファイルです。
コマンド
nano .gitignore
.DS_Store
と書くCTRL+X > y > Hit Return
をクリックしますgit status
変更の最終確認git add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git Push Origin master