1505

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

4

28 に答える 28

2946

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

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!'
于 2008-09-20T11:18:06.417 に答える
260

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
于 2011-07-14T23:42:43.960 に答える
62

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

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

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

次に、リポジトリの.gitignoreと同じようにファイルを編集します。絶対パスを使用する必要があることに注意してください。

于 2008-09-20T13:08:57.303 に答える
39

ステージングされた変更があるためにファイルを削除できない場合:

git rm --cached -f *.DS_Store
于 2014-05-12T00:21:24.763 に答える
17

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

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
于 2010-07-20T14:05:48.417 に答える
16

次のコマンドを使用して、既存のファイルを削除します。

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

次に追加.DS_Storeします.gitignore

于 2016-12-07T07:44:58.550 に答える
14

このファイルを永遠に取り除き、二度と心配する必要がない最善の方法は、

グローバル .gitignore ファイルを作成します。

echo .DS_Store >> ~/.gitignore_global

そして、すべてのリポジトリでこのファイルを使用することを git に知らせます。

git config --global core.excludesfile ~/.gitignore_global それだけです! .DS_Store は邪魔になりません。

于 2020-04-14T12:39:01.487 に答える
10

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

于 2008-09-20T09:20:24.360 に答える
8

以下は私にとって最もうまくいきました。一致しないファイル、およびローカルで変更されたファイルを処理しました。参考までに、これは git 1.7.4.4 を実行している Mac 10.7 システムでのものです。

以下を見つけて削除します。

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f

また、グローバルな core.excludesfile を設定することで、すべてのリポジトリで .DS_Store をグローバルに無視します。

最初に、ファイルを作成します (まだ存在しない場合)。

touch ~/.gitignore

次に、次の行を追加して保存します。

.DS_Store

ファイルをグローバルに尊重するように git を設定します。

git config --global core.excludesfile ~/.gitignore
于 2011-09-28T00:52:59.520 に答える
7

snipplrの次の行は、.DS_Storeローカルで変更されたものを含め、すべての を消去するのに最適であることがわかりました。

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

--cached.DS_Storeとにかく再現されるので、ローカルを保持します。

上記のすべてと同様.DS_Storeに、プロジェクトのルートにある .gitignore ファイルに追加します。その後、それは(レポの)あなたの目の前になくなります。

于 2009-07-21T19:17:07.827 に答える
5

これは機能します:

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

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

于 2008-09-20T09:16:14.103 に答える
4

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

  • $ git rm --cached -f *.DS_Store
  • $ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
  • $ git push オリジン マスター --force
于 2015-07-28T16:16:38.200 に答える
4

リポジトリを初期化するときは、次を含む git コマンドをスキップします。

-u

そしてそれは問題にすべきではありません。

于 2014-04-30T15:08:49.670 に答える
3
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
于 2011-10-19T01:01:44.683 に答える
2

この問題を解決するには、いくつかの解決策があります。.DS_Store ファイルの作成を回避するには、OS X Finder を使用してフォルダーを表示しないでください。フォルダを表示する別の方法は、UNIX コマンド ラインを使用することです。.DS_Store ファイルを削除するには、DS_Store Terminator というサードパーティ製品を使用できます。システム全体から .DS_Store ファイルを削除するには、UNIX シェル コマンドを使用できます。Applications:Utilities からターミナルを起動します。 UNIX シェル プロンプトで、次の UNIX コマンドを入力します。パスワードの入力を求められたら、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 エントリは、ルートと呼ばれるアカウントによって毎日午前 1 時 15 分にシステムによってコマンドが自動的に実行されることを意味します。

コマンドは、find から . システムが実行されていない場合、このコマンドは実行されません。

エントリを保存するには、Esc キーを 1 回押してから、Shift + z+ z を同時に押します。

注: ステップ 4 の情報は、vi エディターのみを対象としています。

于 2012-08-01T09:54:05.510 に答える