2011-12-06 10 views
5

私はconfig/my_private_data.ymlファイルのRailsアプリを持っています。アプリケーション全体をテストサーバーとgithubにプッシュしたいと思います。Git:専用設定ファイルをテストリポジトリにプッシュし、githubにはプッシュしないでください。

しかし、テストサーバーにプッシュすると、プライベートファイルを含める必要があります。私がgithubにプッシュするとき、私はプライベートファイルを含めたくない。これを行う最も簡単な方法は何ですか?

+2

どのようにプライベートですか?ファイルがパブリックになった場合、大量のデスタスターならば、それをまったく含めないでください(デフォルト値で 'config/private_data.yml.template'を使用してください)。チャンスはあなたですか、誰かが間違いを犯したことがあります。あなたはギブスや他のどこかで今考えたことのないデータを持っています。 – Unapiedra

+0

特に私的ではありませんが、私が共有したいことはありません。核コードをギブスに載せたり、アプリに入れたりすることはしません。 – Clay

+0

これは解決策でなければなりません:http://stackoverflow.com/questions/1836742/using-git-how-do-i-ignore-a-file-in-one-branch-but-have-it-committed- in-another –

答えて

1

2つのブランチを設定できます。 masterおよびsecretsecretブランチにconfig/my_private_data.ymlを追加してコミットし、テストサーバーのマスターブランチにプッシュすることができます。あなたがマスターに新しいコミットをしていた場合

touch config/my_private_data.yml 
git checkout -b secret 
git add config/my_private_data.yml 
git commit -m 'Commited secret file' 
git push testserver_repo_url secret 
git checkout master 
git push repo_on_github master 

はその後git checkout secret; git rebase masterを行います。
secretにコミットしていない場合は、そのコミットのチェリーピックを行います。


確かに、このアプローチではすべてが良いわけではありません。私が今思うことから、あなたは誤って秘密の枝をギブスに押し込むことができます。 my_private_data.yml -fileが必要な場合は、実際にmasterで作業することもできません(ただし、秘密ブランチからそのファイルをチェックアウトすることはできます)。

+0

これにアプローチするより良い方法はありますか?私の使用例は、バックアップのためにgithubにプッシュしたいが、テストのためにテストサーバーにプッシュし、プライベートファイルなしでアプリケーションが読み込まれないようにすることです。 – Clay

+0

次の質問は、正反対が可能かどうかということです。たとえば、私は秘密ファイルを含むmasterで作業し、秘密ファイルを持たないmasterのブランチをgithubにプッシュします。素早くマスターをブランチしたり、シークレットファイルのインスタンスをすべて削除したり、ブランチをgithubにプッシュしたりする簡単な方法やスクリプトがありますか? – Clay

+0

@Clay理論的には、フック(google git hooks)を使うことはできますが、秘密ファイルのすべてのインスタンスをgitから削除する方法はありません(gitの履歴を変更できないためです)。 – Unapiedra

関連する問題