異なるリポジトリ間で通信するには、裸の状態を使用する必要があります。ノンベアから引っ張っても問題ありませんが、は、このようなreposにをプッシュすると、ローヤルPITAになる可能性があります。まあ、いいえ、それはです。ローヤルPITA:デフォルトでは、チェックアウトされたブランチにプッシュできません。
それを入れてみませんかするディレクトリを選択し、裸を作成するには:
git init --bare /path/to/repo
その後、すべてのあなたのリポジトリに、このリモートを追加する、のはbare
それを呼びましょう:
git remote add bare [email protected]:/path/to/repo
あなたのリファレンスレポジトリを選択し、マスターブランチにプッシュします:
git push bare master
次に、リポジトリ内のすべてのリポジトリを、専用のブランチの下、または名前空間まで押し込みます。たとえば、マシンhost1
上のリポジトリのために:
host2
について同様
git push bare master host1/master
など、あなたに合った命名規則を選択してください。すすぎ、すべてのホストとブランチのために繰り返します。
そして、必要に応じて/からプル/プルします。
さらに長期的な解決策として、配布用にパッケージ化されている場合、またはインストールして設定する場合はgitoliteを使用することをお勧めします。ステロイドのアクセス権を持つgitです。それ。
出典
2011-12-20 16:31:44
fge
"サーバーは削除されたファイルを削除しません"?まあ、あなたの遠隔地の裸の貯蔵所ではないのですか? – fge
これまで何もなかったような裸の存在ですか?初期プッシュまでのみ。私はしばらくそれを使用していた後もまだ古いファイルがあります。 – nf313743
いいえ、「作業ツリーがありません」のように「裸」です。 githubなどが使用するもののように。 – fge