0

要約があまり参考にならないことはわかっているので、できる限り詳細に問題を説明しようと思います。請負業者が担当するコード ベースの一部とのインターフェイスに必要なコードを開発しています。したがって、請負業者のコードにアクセスしたいのですが、すべての人が会社のサーバーに直接アクセスできるわけではありません。

私たちが行ったことは、コード サーバーにアカウントを持つオンサイト契約者を設定したことです。請負業者のコード用にコード サーバーに裸の git リポジトリを作成し、オンサイトの請負業者のローカル リポジトリをセットアップして、コード サーバーをダウンストリームのリモートとして配置しました。

そのため、彼のローカル レポが私たちの仲介役を務めています。問題は、請負業者のコードにサブ モジュールが含まれており、コード サーバーからレポを複製するときに、これらが自動的にプルダウンされないことです。そして、私たちがやろうとすると

$git submodule update

私たちのローカル マシンでは、請負業者のサーバーからサブモジュールを取得しようとしています。

サブモジュールをローカルで使用できるように、サブモジュールを 2 番目のリモートにもプッシュできるスマートな方法はありますか?

4

1 に答える 1

1

これらのサブモジュールごとに、コード サーバーにベア リポジトリが必要です。次に、請負業者はこれらのリポジトリを自分のサブモジュールにリモートとして追加する必要があります (すべてのリモートに同じ名前を付けます。たとえば、external. メイン リポジトリをサーバーにプッシュした後、メイン リポジトリで実行git submodule for-each 'push external HEAD:tempbranch'します。これにより、すべてのサブモジュールがサーバーにプッシュされます。 .

最後に、自分のサーバーを確認する必要が.git/configあります。ここでは、サブモジュールがクライアントのサーバーではなく自分のサーバーを使用するようにする方法を確認できます。次に実行しgit submodule updateます。

: これは、サブモジュールにブランチが 1 つしかない場合にのみ機能します。そうでない場合、呼び出しpush external HEAD:tempbranchは他のブランチ ヘッドをオーバーライドします。まず、すべてのサブモジュールのすべてのブランチをプルする必要があります。これを実現するには、git-upを使用するgit submodule for-each upか、こちらを参照してください: "git pull --all" はすべてのローカル ブランチを更新できますか? 代替ソリューション用。次に、実行する必要がありますgit submodule for-each push --all

于 2013-02-27T00:08:05.783 に答える