我发现我贡献的一个 OSS 项目已经转移到了 github。我安装了 hg-git 并从 git:// URL 克隆了一个本地仓库;然后我做了改变。
然后我意识到我真的想要自己的 github 分支,所以我做了一个;但我一直无法弄清楚如何切换我现有的本地仓库。我已将本地 repo 设置更改为使用我的 fork 的 git:// URL,它可以拉取;但我不能推动我的改变。它告诉我使用 https:// URL,但是当我进行更改时,我既不能拉也不能推——我收到错误 406,“不可接受”。
在本地 repo 中完成的工作很少,所以我可以重做,但如果本地 repo 和我的 fork 现在可以连接会更简单。
更新
我已经为 Windows 安装了 Github,所以我可以管理 SSH 密钥。它生成了一个密钥(github_rsa)并将其附加到我的 Github 帐户中。
我编辑了 hgrc 文件并添加了一个[ui]ssh=
指向本地 git 'ssh' 命令的设置(埋在 中%APPDATA%\Local\Github
)。
有了这个,如果我进入一个“git-shell”窗口,我猜它会产生 ssh-agent,然后我可以输入诸如“hg incoming”之类的命令并建立连接。所以我得到了正确的远程 repo URL,并且在 git-shell 生态系统中,我已经正确设置了 SSH 密钥。
在常规 CMD.EXE 窗口中,相同的命令会产生“Permission denied (publickey)”。在 TortoiseHg 中,当我尝试“传入”操作时会出现相同的错误。我宁愿继续使用 TortoiseHg,但我不确定如何让它使用 SSH。
最后更新
出于某种原因,TortoisePlink 不想使用 github 的 SSH 服务器,至少不想使用 Github-for-Windows 生成的密钥。所以我仍然安装了适用于 Windows 的 Github(不一定是坏事,但对我想做的事情来说是多余的)。
为了让 hg 和 TortoiseHg 连接,我必须修改我的项目设置:
[ui]
ssh = %USERPROFILE%\AppData\Local\GitHub\<salt>\bin\ssh -i %USERPROFILE%\.ssh\github_rsa
即:指向 SSH 命令,随便携式 GitHub 安装,在命令行中指定 github 生成的密钥。使用此配置,我不需要运行 ssh-agent。