27

从 http 中提取以逃避身份验证(因此,如果我不使用 ssh.keygen,则无需输入密码)。

通过身份验证推送 ssh。

4

2 回答 2

20

git-config手册页

remote.<name>.url远程存储库的 URL。请参阅 git-fetch(1) 或 git-push(1)。

remote.<name>.pushurl远程仓库的推送 URL。参见 git-push(1)。

尝试将前者设置为http:url,将后者设置为git+ssh:(或只是git:)url?

于 2010-08-24T03:05:21.340 回答
15

原始答案,用于 在一个“远程”中推送 ssh:这仅适用于一个repo,即当前一个:

如果您有一个git remote -v返回“ origin”的 https URL,您可以键入:

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,而不仅仅是我的 repos

然后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选项将使其应用于所有存储库,而不仅仅是当前存储库。

于 2018-08-04T17:09:49.997 回答