1

セットアップ

4 台のマシン ( Dev1Dev2Server、およびLaptop ) のローカル ネットワークがあります。

サーバーには、メイン リポジトリと呼ばれるものがあります。

2 つの Dev マシンは、開発が行われる場所です。

dev..commit...dev..commit...dev..commit...dev..commit...dev..commit.

…そしてついに…

push to **Server**.

これまでのところすべて順調です。このサイクルは非常にうまく機能します。


バックアップ戦略

ラップトップには、他のマシンが使用する同じリポジトリのクローンがあります。このクローンには、 ServerDev1、およびDev2からのリポジトリへのリモートがあります。

ラップトップで実行されているスケジュールされたタスクは、毎日午後 3 時までに他のすべてのリポジトリからすべてのコミットを取得します。

バックアップ操作はフェッチであるため、ラップトップは、さまざまな頭が互いに影響を与えることなく、全員のリポジトリがどこにあるかのリストを維持することができます。

マシンは毎日私と一緒に移動するので、これは良いオフサイト バックアップだと思います。


達成したいこと

この責任をラップトップから別のクラウド ベースのサーバーに移したいと考えています。クラウド1

ただし、 Cloud1はDev1Dev2、またはファイアウォールの背後にある他のマシンを見つけることができません。

したがって、各 Dev マシンからCloud1へのプッシュ (あいまいな用語で申し訳ありません) をスケジュールする方法を見つけることができるかどうかを確認するのは妥当だと思いました。

しかし今、私たちは問題の核心に達しています。

問題

プッシュはフェッチの反対ではありません。

各開発マシンがCloud1にプッシュしようとすると、各マスター ブランチ (少なくとも) はクラウド マシンのマスター ポインターを更新しようとします。

プッシュは、これまでの作業を他のユーザーと共有したい場合に適しています。

リモート マシンのすべてのコミットとヘッドを、そのマシン自体のヘッドに影響を与えずにバックアップするのに適したコマンドが必要です。

これが現在可能であるとは確信していません。私は他のアプローチを研究しています。この質問は、純粋にマージなしでプッシュする git の機能に関するものです。(厳密には正確ではありませんが、ここまで読んで私の言いたいことが理解できたと思います)

4

1 に答える 1

0

更新する refspec を明示的に指定できます。したがって、Dev1がそうする場合

git push cloud +refs/heads/master:refs/remotes/dev1/master

そしてDev2はそうします

git push cloud +refs/heads/master:refs/remotes/dev2/master

彼らは衝突しません。

コマンドラインですべてを指定したくない場合は、開発者ごとに異なるプッシュ参照仕様を構成できることに注意してください。

于 2013-02-01T12:19:34.830 に答える