Как я могу прикрепить несколько URL к одному git remote? - PullRequest
13 голосов
/ 16 апреля 2010

В настоящее время я использую git для Windows через комбинацию 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 remote update, но ни один из них ничего не пробует после первого URL.

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

Ответы [ 4 ]

2 голосов
/ 05 апреля 2013

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

computername    192.168.100.34
# computername    192.168.100.68

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

1 голос
/ 12 августа 2014

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

Вы можете сохранить несколько версий ~/.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

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

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

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

РЕДАКТИРОВАТЬ: Я только что узнал, что мне не нужно делать все это. Я только что включил nat loopback на своем маршрутизаторе, и теперь я могу получить единый доступ к своему компьютеру, используя внешнее имя / порт. Однако во многих ситуациях, например в корпоративной сети, связывание с маршрутизатором может быть невозможным

1 голос
/ 16 апреля 2010

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

origin: местоположение моего репо дома foriegn: местоположение моего репо где угодно (мой dns перенаправляет в мой дом)

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

0 голосов
/ 16 апреля 2010

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

например. GitHub.

Если вы хотите сохранить это в тайне, попробуйте развернуть код или коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...