обновление подмодуля git с другим пользователем - PullRequest
22 голосов
/ 18 мая 2011

Я вошел в систему как пользователь A на моей машине, но мое хранилище доступно через имя пользователя B на сервере, с которого я берусь. Файл .gitmodules имеет url = ssh://domain.com/abc/def.git.

Как я могу настроить git для использования имени пользователя B вместо A, когда я делаю git submodule update?

Ответы [ 3 ]

30 голосов
/ 18 мая 2011

Я предполагаю, что подмодуль уже инициализирован, поэтому 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

С другой стороны, если подмодуль уже был обновлен один раз, тогда для origin в подмодуле будет установлено значение, указанное в этом параметре конфигурации.В этом случае вам нужно будет сделать:

cd my-submodule
git config remote.origin.url ssh://B@domain.com/abc/def.git

Боюсь, это немного сбивает с толку, но подмодули очень гибкие.Я попытался объяснить некоторые из этих деталей в сообщении в блоге .

13 голосов
/ 30 января 2015

Хотя вышеприведенное решение работает, я нашел другое решение, которое лучше соответствует моим потребностям, и, возможно, первоначальному заказчику. Мне нужен был способ указать имя пользователя по умолчанию для всех операций git на удаленном сервере вместо того, чтобы изменять настройки git для каждого проекта. Решение на самом деле не имеет ничего общего с git, но ssh.

Просто добавьте эти строки в ваш ~ / .ssh / config:

Host domain.com
User B

(замените domain.com доменом вашего git-сервера.) Теперь, даже если вы вошли на локальный компьютер как пользователь A, SSH будет использовать B в качестве имени пользователя при подключении к серверу.

Теперь вы можете запустить git submodule update без добавления имени пользователя в конфигурации git.

1 голос
/ 19 мая 2011

Короткий ответ: «проверьте, можете ли вы использовать относительные пути для подмодулей»

Подробно: у нас есть подмодуль, который используется несколькими приложениями.Мы сохранили подмодуль в том же репо.

Структура выглядит следующим образом: репо

|-app1
|-app2
|-submod

Когда мы клонируем приложение, приложение / .git / config получает URL с текущим пользователем, как'userA@repo.com' В .gitmodules приложений мы задаем url как '../submod'. Таким образом, когда мы выполняем 'submodule init', git генерирует абсолютный URL для подмодуля из относительного URL, который мы дали в .gitmodules.

...