Как переключить протокол git с https на s sh только при необходимости аутентификации - PullRequest
1 голос
/ 19 апреля 2020

Я использую YubiKey (смарт-карту PIV с USB) для хранения учетных данных s sh для GitHub. Каждый раз, когда я получаю доступ к GitHub через s sh, мне нужно вставить ключ и вставить пин-код. Это немного напряженно, и я хочу избежать этого, если это не нужно. Например, при клонировании репозитория publi c мне не нужно проходить аутентификацию, когда я делаю это через https.

. Я могу заставить git клиента использовать s sh везде:

[url "git@github.com:"]
    insteadOf = https://github.com/

Но я не хочу применять s sh везде. Я хочу это только тогда, когда необходима аутентификация.

Кто-нибудь знает хорошие способы?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Git не предоставляет способа сделать это изначально, и если вы хотите использовать HTTPS для публичных c репозиториев и S SH для частных репозиториев, вам нужно будет сделать это вручную.

Причина этого в том, что Git не знает, что два разных URL-адреса хранилища отображаются в одном и том же хранилище. Хотя есть общие шаблоны, то, что работает для GitHub, не работает для моего персонального сервера, поэтому он не может ничего сказать об операции. Поэтому вам необходимо четко указать, что вы хотите.

Кроме того, единственный способ Git узнать, что удаленный HTTPS-сервер требует аутентификации, - это попытаться сделать запрос. Таким образом, чтобы выполнить sh то, что вы хотите, ему нужно будет сделать HTTP-запрос, понять, что он получил 401, прервать весь отдельный HTTP-помощник, выполнить откат, внутренне изменить протокол, а затем создать совершенно новый процесс для сделай это. Излишне говорить, что Git не имеет такой поддержки.

Как и другие предлагали, вы можете использовать S SH URL-адреса для ваших частных репозиториев и использовать HTTPS URL-адреса для ваших публичных репозиториев c с pushInsteadOf настройка в вашем ~/.gitconfig, но это был бы единственный способ достичь sh того, что вы хотите.

0 голосов
/ 19 апреля 2020

Вы можете изменить удаленный URL на протокол http, используя: git remote set-url origin http://new.git.url/here.

Документация .

...