3

CakePHP 2.2.4 をダウンロードしました(クローンではありません!)。ディレクトリには次の.gitignoreファイルが含まれています。

# only the relevant part here
/app/Config
/app/tmp

ディレクトリ (およびその初期コンテンツ) Configおよびtmpがコミットされないため、これらのコマンドを実行しました。

git add -f Config
git add -f tmp

tmpディレクトリではファイルが変更されず、新しいファイルのみが作成されるため、問題はありません。

対照的に、Configフォルダー内のいくつかのファイル (データベース構成など) を変更する必要がありました。しかし、Git は今、git addこれらの変更されたファイルに再び私を求めています!

これらの変更を無視するにはどうすればよいですか?

あまり作成/変更しなかったため、Git リポジトリ全体を再初期化することもできました。


実際の問題を解決するための CakePHP への私の変更

*.gitignoreCakePHPの新しいファイル:

# removed: /app/Config/

# start edit
/app/Config/*
!/app/Config/Schema/
!/app/Config/*.default.php
# end edit

/app/tmp
/lib/Cake/Console/Templates/skel/tmp/
/plugins
/vendors
/build
/dist
.DS_Store
/tags

また、 /app/Config 内のすべてのファイルに .default という接尾辞を付けまし:

  • acl.ini.default.php。

  • acl.default.php。

  • bootstrap.default.php。

  • core.default.php。

  • database.php.default --> database.default.php

  • email.php.default --> database.default.php

編集:失敗した場合にブラウザにファイルを出力するのを防ぐため、持っている*.default.php方が良いでしょう(それは非常にありそうにありません)。*.php.defaultmod_rewrite

4

1 に答える 1

3

Git はディレクトリを追跡しません。ファイルのみ。したがって、 を実行すると、git はディレクトリ自体ではなく、 のgit add -f Config下の作業ツリーにすべてのファイルを追加するだけです。Configこれらのファイルは Git によって追跡されるため (したがって、無視ルールをオーバーライドします)、それらを変更すると、Git は作業ツリーがダーティであると見なします。

ディレクトリ全体が Git によって効果的に無視される可能性があるため、CakePHP の .gitignore ファイルにはこれらの規則がConfig存在します。tmp空のディレクトリを明示的に作成する必要はありません。おそらく CakePHP がそれらを自動的に作成するからです。

なんらかの理由でそこにディレクトリが存在することを Git に認識させたいが、その内容を無視したい場合は、内部に .gitignore ファイルを追加して、そのディレクトリ内Configのすべてを無視するように指示するtmpルールを含めることができます。*ただし、.gitignore ファイルが存在するため、ディレクトリ自体は維持されます。


更新:作業コピーごとにカスタマイズされる "デフォルト" 構成を Git に保存する場合は、テンプレート構成ファイルを別の名前でコミットして、新しい (無視されます) ファイルは、リポジトリがクローンされ、環境固有の構成オプションが取り込まれたときに削除されます。

私が見ているように、構成ファイル自体はバージョン管理下に置かれるべきではありません。作業コピーが使用されている環境に合わせて調整する必要があるためです。 Wordpress の機能)。

于 2012-12-26T14:11:50.627 に答える