web-dev-qa-db-ja.com

Gitリポジトリから.DS_Storeファイルを削除するにはどうすればよいですか?

どうすればGitレポジトリからいらないMac OS Xの.DS_Storeファイルを削除できますか?

1066
John Topley

リポジトリから既存のファイルを削除します。

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!'
2090
benzado

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
228
Turadg

この問題に取り組むための最善の解決策は、あなたのシステム上のすべての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

編集する

アプリケーション資産としてコミットする必要がある可能性があるため、アイコンを削除しました。

133
Nerve

状況によっては、グローバルにいくつかのファイルを無視したいこともあります。私にとっては、.DS_Storeはそのうちの1つです。方法は次のとおりです。

git config --global core.excludesfile /Users/mat/.gitignore

(または任意のファイル)

それからリポジトリの.gitignoreのようにファイルを編集します。絶対パスを使用する必要があると思います。

56
webmat

変更が段階的に行われているためにファイルを削除できない場合

git rm --cached -f *.DS_Store
18
Reggie Pinkham

端末を開き、「cd <ProjectPath>」と入力します。

  1. 既存のファイルを削除します。find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. これを追加.DS_Store

  4. 「ctrl + x」と入力します。

  5. 「y」と入力

  6. ファイルを保存するために入力してください

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

15

上記のgit-rmをgit rmに変更して動作させる必要がありました。

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
15
David Kahn

上の投票の答えは素晴らしいですが、私のようなルーキーを手助けする、ここに.gitignoreファイルを作成し、それを編集し、それを保存し、gitに既に追加したファイルを削除し、そしてGithubにファイルをプッシュする方法があります。

.gitignoreファイルを作成します

.gitignoreファイルを作成するには、指定された名前で空のファイルを作成するファイルをtouchにするだけです。次のコマンドを使用できるように、.gitignoreという名前のファイルを作成します。

touch .gitignore

ファイルを無視する

今度はDS St​​oreファイルを無視するようにgitに指示する行を.gitignoreに追加する必要があります。ナノエディタを使ってこれを行うことができます。

nano .gitignore

それはそれから抜け出す方法についての指示が含まれているのでナノはいいです。 (Ctrl - O 保存する、 Ctrl - X 出る)

無視するいくつかの一般的なファイルをリストしたこの Github Gist からいくつかのアイデアをコピーして貼り付けます。この質問に答えるための最も重要なものは、

# OS generated files #
######################
.DS_Store
.DS_Store?

#はコメントであり、ファイルが大きくなるにつれて整理しやすくなります。

この Githubの記事 にも、いくつかの一般的なアイデアとガイドラインがあります。

すでにgitに追加されているファイルを削除します

最後に、ディレクトリからそれらのDS St​​oreファイルを実際に削除する必要があります。

トップ投票の答えからこの素晴らしいコマンドを使ってください。これはあなたのディレクトリ内のすべてのフォルダを通過し、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!'

14
Joshua Dance

git-rmを使用してそれらを削除してから、.gitignoreに.DS_Storeを追加して再度追加されないようにします。また、 blueharvest を使用して、それらがまとめて作成されないようにすることもできます。

10
Nathan

既存のファイルを削除するには、このコマンドを使用します。

find . -name '*.DS_Store' -type f -delete

それから.DS_Store.gitignoreに追加します

8
Sunny

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
7
user7718859

以下は私にとって最もうまくいった。不一致ファイル、およびローカルで変更されたファイルを処理しました。参考までに、これは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
7
jordantbro

snipplr の次の行は、ローカルの変更があるものも含めて、すべての.DS_Storeを消去するのが最善です。

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

--cachedオプション、とにかく再現されるのであなたのローカルの.DS_Storeを保存します。

そして、上で述べたように、プロジェクトのルートにある.gitignoreファイルに.DS_Storeを追加します。それからそれはもはやあなたの目には見えなくなるでしょう(レポ)。

6
manat

何らかの理由で、上記のどれも私のMacでは動作しませんでした。

私の解決策はターミナルランからです:

rm .DS_Store

その後、次のコマンドを実行します。

git pull Origin master
4
Invincible

私はパーティーに少し遅れています、しかし私は良い答えを持っています。 .DS_Storeファイルを削除するには、ターミナルウィンドウから次のコマンドを使用しますが、 'find'を使用してファイルを削除するときは十分に注意してください。 -nameオプションと一緒に特定の名前を使用することは、それを使用するためのより安全な方法の1つです。

cd directory/above/affected/workareas
find . -name .DS_Store -delete

単に前後にそれらをリストしたい場合は、 " - 削除"を省略することができます。それは彼らが去ったことをあなたに安心させるでしょう。

〜/ .gitignore_globalアドバイスに関しては、ここで注意してください。そのNiceファイルを各作業領域の最上位レベル内の.gitignoreに配置してコミットすると、リポジトリを複製した人がその使用の恩恵を受けることになります。

4
zeozod

これは動作します:

find . -name "*.DS_Store" -type f -exec git-rm {} \;

.DS_Storeを含む、名前が._.DS_Storeで終わるすべてのファイルを削除します。

4
John Topley

これは私にとってはうまくいきました。上からの2つの答えの組み合わせです。

  • $ git rm --cached -f * .DS_Store
  • $ git commit -m "フィルタブランチ - インデックスフィルタ 'git rm - キャッシュ--ignore-unmatch .DS_Store"
  • $ git Push Origin master --force
3
JLunceford

リポジトリを初期化するときは、次の内容を含むgitコマンドをスキップしてください。

-u

それは問題にならないはずです。

3
dav1dhunt

これをあなたのファイルに追加する

#Ignore folder mac
.DS_Store

これを保存してコミットする

git add -A
git commit -m "ignore .DS_Store"

そして今、あなたはすべてのあなたのコミットのためにこれを無視します

2
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git Push Origin master --force
2
JZ.

無視されたファイルを削除します。

(.DS_Store)

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

この問題を解決するためのいくつかの解決策があります。 .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エディター専用です。

2
vinny

.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
0
Wael Assaf