自分のマシンにユーザーAとしてログインしていますが、プル元のサーバーのユーザー名Bからリポジトリにアクセスできます。.gitmodules
ファイルには。がありurl = ssh://domain.com/abc/def.git
ます。
使用するときにAではなくユーザー名Bを使用するようにgitを構成するにはどうすればよいgit submodule update
ですか?
自分のマシンにユーザーAとしてログインしていますが、プル元のサーバーのユーザー名Bからリポジトリにアクセスできます。.gitmodules
ファイルには。がありurl = ssh://domain.com/abc/def.git
ます。
使用するときにAではなくユーザー名Bを使用するようにgitを構成するにはどうすればよいgit submodule update
ですか?
サブモジュールはすでに初期化されていると思いますので、のようにgit config --list | grep ^submodule
表示されますsubmodule.my-submodule.url=ssh://domain.com/abc/def.git
。
git submodule update
まだ初めて実行していない場合は、次のように設定オプションを変更できます。
git config submodule.my-submodule.url ssh://B@domain.com/abc/def.git
一方、サブモジュールがすでに1回更新されている場合、サブモジュールではorigin
、その構成オプションで指定されたものに設定されます。その場合、次のことを行う必要があります。
cd my-submodule
git config remote.origin.url ssh://B@domain.com/abc/def.git
少し紛らわしいですが、サブモジュールは非常に柔軟です。私はブログ投稿でこれらの詳細のいくつかを説明しようとしました。
上記の解決策は機能しますが、自分のニーズ、そしておそらく元のリクエスターのニーズにより適した別のソリューションを見つけました。プロジェクトごとにgit構成を変更する代わりに、リモートサーバーでのすべてのgit操作にデフォルトのユーザー名を指定する方法が必要でした。このソリューションは、実際にはgitとはまったく関係ありませんが、sshとは関係ありません。
〜/ .ssh/configに次の行を追加するだけです。
Host domain.com
User B
(domain.comをgitサーバーのドメインに置き換えます。)これで、ユーザーAとしてローカルマシンにログインしている場合でも、SSHはサーバーに接続するときにユーザー名としてBを使用します。
git submodule update
これで、gitconfigにユーザー名を追加しなくても実行できます。
簡単な答えは、「サブモジュールに相対パスを使用できるかどうかを確認する」です。
詳細は、複数のアプリで使用されているサブモジュールがあります。サブモジュールを同じリポジトリに保持しました。
構造はこんな感じ、レポ
| -app1 | -app2 | -submod
アプリのクローンを作成すると、app / .git /configは'userA@repo.com'のような現在のユーザーのURLを取得します。アプリの.gitmodulesでは、URLを'../submod'として指定します。 init'、gitは、.gitmodulesで指定した相対URLからサブモジュールの絶対URLを生成します。