2016-06-29 3 views
2

マシンAはインターネット接続を持ち、マシンBはインターネット接続していません。どちらもローカルリポジトリを持ち、マシンAはGithubと対話できます。開発は両方のマシンで行われます。 git-bundleは、リポジトリを同期させるために使用されています。同期のgit bundle:双方向のすべてのブランチがローカルとリモートのレポ間で同期します

通常フロー:

  1. A.上のクローンgithubのリポジトリがにバンドルからすべての分岐を引い

  2. をB内のすべての枝の束を作成し、Aにバンドルを転送しますgithubからクローンされたリポジトリ更新されたリポジトリ(すべてのブランチ)をgithubにプッシュします。

  3. githubリポジトリからすべてのブランチのバンドルを作成します。リポジトリの全ての枝の束を作成する方法がありますB.

上のリポジトリにバンドルからすべてのブランチを引いてBにバンドルを転送します。しかし、一度にバンドルのすべてのブランチをローカルリポジトリに引き込む方法はありますか?

双方向同期アップは、単一ブランチリポジトリの場合は単純なようです。

+2

BはAへのネットワークアクセス権を持っていますか、またはネットワークとは完全に別のものですか? – Vampire

+0

ヴァンパイアの質問に対する答えが「はい」の場合、インターネットなしでAとBの間を直接プッシュすることができます。それ以外の場合は、バンドルを転送するためにフラッシュドライブまたは物理メディアを使用していると思いますか? –

+0

@ヴァンパイア:いいえBは島です。 – subba

答えて

2

bundleは他のリポジトリのようなものですので、 - 唯一の違いは、バンドルは、単一のファイルとして保存することが起こるということで - あなたは、バンドルからすべてのブランチをフェッチし、彼らににそれらをマージgit pull --allを使用することができます追跡の枝に対応する:

git pull --all /path/to/bundle 

注意、しかし、--allオプションがgit fetchに適用されること。これは、現在のローカルブランチ(すなわち、HEADによって参照されるもの)のみが更新されることを意味する。すべてのローカルブランチを更新したい場合は、自分でスクリプトを書くか、git-upのようなものを使う必要があります。

関連する問題