Как я могу подключить несколько URL-адресов к одному удаленному устройству git?

В настоящее время я использую git для окон через комбинацию msysgit и Cygwin.

У меня есть ноутбук, который я перемещаю совсем немного, так что он не в постоянном месте. К сожалению, у меня нет согласованного имени из-за того, что имя компьютера не разрешено во всех местах, к которым я подключаюсь, поэтому я не могу просто использовать имя компьютера в качестве хоста для URL-адреса (например, git://compname/repo), поэтому я должен использовать IP-адрес.

Есть ли способ добавить несколько URL-адресов для удаленного доступа? Я видел

git remote set-url --add [--push] <name> <newurl>

как способ добавления нескольких URL-адресов на удаленный сервер, и я вижу обновления в файле .git/config, но git пытается использовать только первый.

Есть ли способ получить git, чтобы попытаться использовать все URL-адреса? Я пробовал как удаленное обновление git fetch, так и git, но ничего не пытается после первого URL-адреса.

Обратите внимание, что я еще не пробовал это на linux, и я не могу исправить разрешение имени компьютера, поскольку это работает.

Ответы

Ответ 1

Я думаю, что лучше всего настроить ваш URI удаленного пользователя на имя computername, а затем добавить имя компьютера в файл hosts (расположенный в %SystemRoot%\system32\drivers\etc\hosts):

computername    192.168.100.34
# computername    192.168.100.68

Затем вы можете хранить несколько записей для разных IP-адресов и комментировать/раскомментировать их по мере необходимости. Больше не нужно переходить на изменение удаленного URI на основе каждого репо, просто обновляйте его в одном месте, а затем все репозитории, использующие имя_компьютера в качестве URI, будут использовать новое местоположение.

Ответ 2

Я лично делаю то же самое, я использовал два пульта дистанционного управления

происхождение: расположение моего репо, когда дома foriegn: расположение моего репо когда-либо еще (мой DNS перенаправляется на мой дом)

тогда я просто нажимаю/тяну на соответствующий пульт, он немного грязный, но он работает.

Ответ 3

Этот подход вдохновлен ответом @Mark Стикли. Он работает, даже если у вас есть два разных номера порта (а не только имена хостов) для доступа к одному и тому же компьютеру из двух разных мест.

Вы можете хранить несколько версий ~/.ssh/config в зависимости от количества ситуаций.

Например, в моем случае дома я обращаюсь к своему серверу с именем хоста как my-fancy-server и портом как 22. В офисе имя хоста my-dyndns-name, а имя порта XXX.

Итак, у меня есть две версии ~/.ssh/config. Дома он говорит:

Host home
    my-fancy-server
    Port 22
    User abhishek
    IdentityFile /home/abhishek/.ssh/id_rsa

(пожалуйста, отрегулируйте его последние два значения соответственно. Последнее не нужно, если вы не используете ключи) В офисе говорится:

Host home
    my-dyndns-name
    Port XXX
    User abhishek
    IdentityFile /home/abhishek/.ssh/id_rsa

У меня есть script, который настраивает содержимое ~/.ssh/config при переходе в новое место. Можно даже автоматизировать это, написав script, который инициируется изменениями в сети.

У меня есть только один пульт в моем конфигурационном файле git, который выглядит как

[remote "origin"]
    url = home:/path/to/repo
    fetch = +refs/heads/*:refs/remotes/origin/*

EDIT: Я только узнал, что мне не нужно все это делать. Я только что разрешил nat loopback на моем маршрутизаторе, и теперь я могу равномерно получить доступ к своему компьютеру с помощью внешнего имени/порта. Однако во многих ситуациях, например, в корпоративной сети, возиться с маршрутизатором может не вариант

Ответ 4

Я бы предложил использовать другой удаленный компьютер в качестве точки синхронизации между вашим ноутбуком и другими компьютерами, которые вы используете.

например. GitHub.

Если вы хотите сохранить его в приватном режиме, попробуйте unuddle или codaset.