我发现了一个我已经贡献的OSS项目已经转移到github。我安装了hg-git并从git:// URL克隆了一个本地repo;然后我做了改变。
然后我意识到我真的想要自己的github前叉,所以我做了一个;但我还没弄清楚如何切换现有的本地仓库。我已经更改了本地repo设置以使用我的fork的git:// URL,它可以拉动;但我不能推动我的改变。它告诉我使用https:// URL,但当我进行更改时,我既不能拉也不能推 - 我得到错误406,“不可接受。”
在本地仓库中完成的工作很少,所以我可以重做它,但如果本地仓库和我的叉子现在可以连接它会更简单。
更新
我已经为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,但我不确定如何使用它。
最终更新
出于某种原因,TortoisePlink不想使用github的SSH服务器,至少不能使用Github for for Windows生成的密钥。所以我仍然安装了Github for Windows(不一定是坏事,但对我想做的事情多余)。
要让hg和TortoiseHg连接,我必须修改我的项目设置:
[ui]
ssh = %USERPROFILE%\AppData\Local\GitHub\<salt>\bin\ssh -i %USERPROFILE%\.ssh\github_rsa
即:指向SSH命令,使用便携式GitHub安装,并在命令行上指定github生成的密钥。使用此配置,我不需要运行ssh-agent。
答案 0 :(得分:1)
你需要通过ssh推送,这意味着你需要推送:
hg push git+ssh://git@github.com/<login>/<repo>
请注意在网址的第一部分使用git@
而不是您的登录信息。这实际上很重要;服务器将通过提供的SSH密钥确定您的凭据。
您可能还需要首先将您的ssh密钥添加到您的GitHub帐户(每step 4 of this page)。
这假设您通过GitHub UI创建了原始GitHub存储库的分支;使用hg-git推送到空的存储库可能需要额外的步骤。