Как я могу подключить несколько 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.