Как настроить git, чтобы вытащить из http и протолкнуть ssh в один «удаленный»? - PullRequest
23 голосов
/ 24 августа 2010

Извлечение из http, чтобы избежать аутентификации (поэтому мне не нужно вводить пароль, если я не использую ssh.keygen).

Проталкивание через ssh с аутентификацией.

Ответы [ 2 ]

18 голосов
/ 24 августа 2010

со страницы руководства git-config :

remote.<name>.url URL-адрес удаленного хранилища.См. Git-fetch (1) или git-push (1).

remote.<name>.pushurl Push-адрес удаленного репозитория.См. Git-push (1).

Попробуйте установить первый для http: url, а второй для git+ssh: (или просто git:) URL?

10 голосов
/ 04 августа 2018

Исходный ответ, для проталкивания ssh в одном «удаленном» : это относится только к одному репо, текущему:

Если у вас есть git remote -v, который возвращает https URL для "origin", вы можете ввести:

git config remote.origin.pushurl git@github.com:aUser/aRepo

Или, скорее:

git remote set-url --push git@github.com:aUSer/aRepo

Как указано :

Он не отличается функционально, так как set-url внутренне заканчивается просто вызовом config.Но set-url будет жаловаться, если вы неправильно наберете командную часть "git remote set-url --push", тогда как git config будет молча принимать опечатки, но на самом деле не сможет установить URL пульта.

См. git-reference (здесь адаптировано):

$ git remote -v
origin  https://github.com/schacon/git-reference.git (fetch)
origin  https://github.com/schacon/git-reference.git (push)

$ git remote set-url --push origin git@github.com:schacon/git-reference.git

$ git remote -v
origin  https://github.com/schacon/git-reference.git (fetch)
origin  git@github.com:schacon/git-reference.git (push)

В контексте вознаграждения jww добавляет:

Я хочу, чтобы это применялось ко всем github.com, а не только к моим репозиториям

Тогда git remote не является ответом.

Только url.<base>.pushInsteadOf будет применяться к всем репозиториям:

Любой URL, начинающийся с этого значения, не будет передан;вместо этого он будет перезаписан для начала, а полученный URL будет передан.Я

Итак:

 git config --global url."git@github.com:".pushInsteadOf https://github.com/
 # or
 git config --global url."ssh://git@github.com/".pushInsteadOf https://github.com/

Я упомянул эту опцию в 2014 году в " Git: как получить публичный доступный только для чтения git: // URL".

Опция --global позволяет применить ее к всем репо, а не только к текущему.

...