Внедряем в нашей команде систему контроля версий git, используя для этого gitlab (хочется self-hosted и интерфейс). git-сервер доступен по https
протоколу, а по http
отвечает межсетевой экран, но не будем вдаваться в подробности администрирования, мы программисты просто пользователи в данном случае :)
На linux системах все ровно, а вот на windows вылезла проблема прямо на самом старте, но обо всем по порядку.
Как работаем?
Как обычно, создаем пустой репозиторий на gitlab и видим несколько вариантов начала работы с этим репозитием при наличии уже существующего кода в локальном хранилище (на диске).

remote origin
) чтобы проводить с ним синхронизацию. При этом не важно в какой момент происходит первый коммит, до или после установки источника.Какая проблема?
Повторюсь, на linux (конкретно у меня Ubuntu 18.04 LTS) все нормально, а у коллеги на Windows 10, после проведения любой из изложенных на скрине последовательстей команд, при push
терминал отвечал:
fatal: Произошла ошибка при отправке запроса. fatal: Невозможно соединиться с удаленным сервером fatal: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера ip_address:80 error: unable to read askpass response from 'C:/Program Files/Git/mingw64/libexec/git-core/git-gui--askpass'
Сразу бросается в глаза тот факт, что git-клиент пытается установить соединение с git-сервером на 80 порту, на котором только http
и на котором ответы межсетевого экрана, а должен по 443 порту, где https
.
Проверяем источник и видим что все нормально, указан https
:
$ git remote -v origin https://git.---/Byurrer/test2.git (fetch) origin https://git.---/Byurrer/test2.git (push)
Однако git-клиент вcе-равно идет не туда куда надо.
Решение проблемы
Попробовав установить источник с явным указанием 443 порта получили отказ:
git remote add origin https://git.---:443/Byurrer/test2.git fatal: внешний репозиторий origin уже существует
Тогда попробуем так:
git remote set-url origin https://git.---:443/Byurrer/test2.git
И проверяем:
$ git remote -v origin https://git.---:443/Byurrer/test2.git (fetch) origin https://git.---:443/Byurrer/test2.git (push)
Пробуем push
и все нормально. Проблема решена, смело push
им!
git remote set-url
позволяет установить порт даже если host адресов совпадаетgit remote remove origin git remote add origin https://git.---:443/Byurrer/test2.git