2016-11-03 4 views
1

私はRailsアプリケーションで以下のシナリオを持っていますが、Githubのような公開リポジトリに開発資格情報をプッシュしたくない他のアプリケーションにもシナリオを採用することができます。GIT - 追跡からローカルファイルを削除するが、リモートリポジトリにコピーを残す方法?

config/database.yml私は自分のローカルMySQLデータベースの資格情報を持っていますが、実際にこの詳細を公開する必要はありません。そのため、たとえばダミーデータの場合はdatabase.ymlのように1つのコピーを作成してください。それをリモートリポジトリにプッシュし、.gitignoreに追加してトラッキングから削除し、実際のデータベースクレデンシャルでローカルリポジトリ内のこのファイルを更新します。私がこれをした後:

git rm --cached config/database.ymlファイルは実際に私のリモートリポジトリから削除されました。どのように私はこれを防ぐことができ、私は初期設定ファイルをプッシュした後、無視しますが、リモートリポジトリにこのファイルの最初のコミットを残しますか?

マイ.gitignoreをかいつまんでファイルconfig/database.yml

# Ignore config/database.yml 
/config/database.yml 

を無視するように、このラインを持って、私は私のローカルおよびリモートのリポジトリにファイルの2つの異なるコピーを持つようにしたい、と私は変更を追跡する必要はありません一度私は実際のMySQLサーバ接続の資格情報でdatabase.ymlファイルを更新します。

答えて

1

database.ymlをバージョン管理にコミットしないでください。 .gitignore

代わりにダミー値を持つexample.database.ymlというコピーをコミットします。次に、デプロイ・プロセスは例をコピーし、秘密の値を置き換えます。

そうしないと、設定ファイルを無視し、フレームワークを変更する必要があるときに一時的に無視し、バージョンコントロールに誤ってパスワードをコミットする危険性があるというメンテナンスの悪夢に悩まされます。

0

あなたは追跡されたファイルへのローカル変更を無視する

git update-index --assume-unchanged config/database.yml 

を使用することができます。

+0

実際にはこれはうまくいかないでしょう。詳細は 'git update-index --skip-worktree 'を参照してください。[この回答](http://stackoverflow.com/a/39583010/4233593) 。 –

関連する問題