Заменить восходящий поток локального (hg-git) клона с (github) original на fork

Я обнаружил, что проект OSS, в который я внес вклад, переехал на github. Я установил hg-git и клонировал локальный репозиторий с URL-адреса git: //; Затем я внес изменения.

Затем я понял, что действительно хочу свою собственную вилку github, поэтому я сделал ее; но я не смог понять, как переключить мой существующий локальный репо. Я изменил настройки локального репо, чтобы использовать git:// URL моего форка, и он может тянуть; но я не могу выдвинуть свои изменения. Он говорит мне использовать URL-адрес https://, но когда я делаю это изменение, я не могу ни тянуть, ни толкать - я получаю ошибку 406, "недопустимо".

Работа, выполняемая в локальном репо, минимальна, поэтому я могу повторить ее, но было бы проще, если бы локальное репо и мой форк могли просто соединиться сейчас.

ОБНОВИТЬ

Я установил Github для Windows, чтобы я мог управлять ключом SSH. Он сгенерировал ключ (github_rsa) и прикрепил его к моей учетной записи Github.

Я отредактировал файл hgrc и добавил [ui]ssh= установка, указывающая на локальную команду git 'ssh' (похоронена в %APPDATA%\Local\Github).

При этом, если я захожу в окно "git-shell", которое, как мне кажется, порождает ssh-agent, я могу ввести такие команды, как "hg входящий", и соединение установлено. Итак, у меня есть правильный URL удаленного репо, а в экосистеме git-shell у меня настроены SSH-ключи.

Из обычного окна CMD.EXE та же команда выдает "Отказано в доступе (publickey)". От TortoiseHg та же ошибка появляется при попытке "входящего" действия. Я бы предпочел продолжать использовать TortoiseHg, но я не уверен, как заставить его использовать SSH.

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ

По какой-то причине TortoisePlink не хочет играть с SSH-сервером github, по крайней мере, с ключом, сгенерированным Github-for-Windows. Так что у меня все еще установлен Github для Windows (не обязательно плохо, но излишне в том, что я хотел сделать).

Чтобы подключить hg и TortoiseHg, мне пришлось изменить настройки моего проекта:

[ui]
ssh = %USERPROFILE%\AppData\Local\GitHub\<salt>\bin\ssh -i %USERPROFILE%\.ssh\github_rsa

То есть: укажите на команду SSH, установленную с переносным GitHub, и укажите сгенерированный github ключ в командной строке. С этой конфигурацией мне не нужен ssh-agent для запуска.

1 ответ

Решение

Вам нужно нажать через ssh, то есть вам нужно нажать через:

hg push git+ssh://git@github.com/<login>/<repo>

Обратите внимание на использование git@ вместо вашего логина в первой части URL. Это на самом деле имеет значение; сервер выяснит ваши учетные данные с помощью предоставленного ключа SSH.

Возможно, вам также придется сначала добавить свой ключ ssh в свою учетную запись GitHub (на шаге 4 этой страницы).

Это предполагает, что вы создали форк исходного репозитория GitHub через пользовательский интерфейс GitHub; отправка в пустой репозиторий с помощью hg-git может потребовать дополнительных шагов.

Другие вопросы по тегам