二つのサーバ(ミラー)へのプッシュをgitの方法。私はそれらを平等に保ちたいと思います。私のローカルマシンで実行する各プッシュは、両方のサーバーまたはメインサーバーとクラウドとの同期に移動する必要があります。どうしたらいいですか?簡単な方法はありますか?ローカルマシンやメインサーバーで実行する必要がありますか?私はgitの、インストールgitoriousと一つのメインインスタンスとクラウド上の別のものを実行している2つのサーバーを持っている
答えて
複数のURLを1つのリモートに追加できます。何をする必要があるだろうことはまずgitoriousサーバーに対応するリモートを作成し、ローカルマシン上で、次のとおりです。
git remote add -m master remotename ssh://gitorious-server/path
あなたが明示的にプッシュURLとしてgitoriousサーバーのURLを再度追加する必要があります:
git remote set-url --add --push remotename ssh://gitorious-server/path
、その後は、クラウドサーバーに対して同じ操作を行います。
このたびは、あなたが、ローカルであなたのチャンgit push
を実行コンフィギュレーションを設定する必要がありますesは両方のサーバーにプッシュされます。しかし、git pull
(またはgit fetch
)を実行すると、それはgitoriousサーバーからのみ取得されます。サーバーが同期している場合は、これがすべて必要です。
あなたは今まで、その後それはあなたが必要なすべてのですが、この一つの特定のローカルマシンからいずれかのサーバーにプッシュしている場合。しかし、他のコンピュータから1つまたは他のサーバーにプッシュする場合は、他の各コンピュータで同じ設定を行う必要があります。十分なコンピュータがある場合、これは扱いにくくなっていること、または他の人が2つのリポジトリへの書き込みアクセス権を持っていて、絶対に設定権を得るためにそれらを信頼していない場合、あなたはおそらく何かのサーバー側を行う方がいいでしょう。これは、受信後のフック方法manojlds mentionedです。あなたはポスト受信方式を使用している場合は、明確にするために、はは、私の記事の前半で説明したデュアルURLのリモートメソッドを使用しないでください。
理想的な方法は、セットアップにクラウドレポにプッシュし、あなたのgitoriousレポのpost-receive
フックになります。
最も簡単な方法bashの関数を記述し、あなたの~/.profile
または~/.bashrc
または~/.bash_profile
(仮定のUnix)の例では、それを適用するために、次のようになります。
function gitpushall {
git push -u origin master
git push -u foo master
}
が次にログインにそれを適用するsource .profile
を実行し、実行gitpushall
こんにちは、あなたはフックの例を持っていますか? – dextervip