私はconfig/my_private_data.yml
ファイルのRailsアプリを持っています。アプリケーション全体をテストサーバーとgithubにプッシュしたいと思います。Git:専用設定ファイルをテストリポジトリにプッシュし、githubにはプッシュしないでください。
しかし、テストサーバーにプッシュすると、プライベートファイルを含める必要があります。私がgithubにプッシュするとき、私はプライベートファイルを含めたくない。これを行う最も簡単な方法は何ですか?
私はconfig/my_private_data.yml
ファイルのRailsアプリを持っています。アプリケーション全体をテストサーバーとgithubにプッシュしたいと思います。Git:専用設定ファイルをテストリポジトリにプッシュし、githubにはプッシュしないでください。
しかし、テストサーバーにプッシュすると、プライベートファイルを含める必要があります。私がgithubにプッシュするとき、私はプライベートファイルを含めたくない。これを行う最も簡単な方法は何ですか?
2つのブランチを設定できます。 master
およびsecret
。 secret
ブランチに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
で作業することもできません(ただし、秘密ブランチからそのファイルをチェックアウトすることはできます)。
これにアプローチするより良い方法はありますか?私の使用例は、バックアップのためにgithubにプッシュしたいが、テストのためにテストサーバーにプッシュし、プライベートファイルなしでアプリケーションが読み込まれないようにすることです。 – Clay
次の質問は、正反対が可能かどうかということです。たとえば、私は秘密ファイルを含むmasterで作業し、秘密ファイルを持たないmasterのブランチをgithubにプッシュします。素早くマスターをブランチしたり、シークレットファイルのインスタンスをすべて削除したり、ブランチをgithubにプッシュしたりする簡単な方法やスクリプトがありますか? – Clay
@Clay理論的には、フック(google git hooks)を使うことはできますが、秘密ファイルのすべてのインスタンスをgitから削除する方法はありません(gitの履歴を変更できないためです)。 – Unapiedra
どのようにプライベートですか?ファイルがパブリックになった場合、大量のデスタスターならば、それをまったく含めないでください(デフォルト値で 'config/private_data.yml.template'を使用してください)。チャンスはあなたですか、誰かが間違いを犯したことがあります。あなたはギブスや他のどこかで今考えたことのないデータを持っています。 – Unapiedra
特に私的ではありませんが、私が共有したいことはありません。核コードをギブスに載せたり、アプリに入れたりすることはしません。 – Clay
これは解決策でなければなりません:http://stackoverflow.com/questions/1836742/using-git-how-do-i-ignore-a-file-in-one-branch-but-have-it-committed- in-another –