我将朋友的git存储库克隆到我的工作站。然后我创建了自己的分支并开始研究它。我还获得了我最初克隆的远程存储库的ssh私钥。
现在,当我尝试将我的更改推送到远程仓库时,我得到“致命的:远程端意外挂断”错误。
git push origin anshumanbhartiya
fatal:The remote end hung up unexpectedly
在这里,anshumanbhartiya是我创建的分支的名称,我试图将这个分支推到我克隆的原点。
我的问题是我知道我应该使用提供给我的密钥推送更改但我无法弄清楚如何使用该密钥。在〜/ .ssh /目录中,我已经存储了我在设置github时生成的私钥和公钥。我不知道如何处理我的朋友ssh key。
请帮忙!
答案 0 :(得分:1)
我已经解决了这个问题。当我从我的本地目录执行git config --list时,远程源url显示了类似git://git.domain/git_repo.git的内容。这必须从git://git.domain/git_repo.git更改为类似git@git.domain:/git_repo.git
这是因为git:// url不接受任何写入。当我们最初克隆git repo时,我们应该做git clone git@git.domain而不是做一个git clone git://。
在此之后,我们需要确保正确配置了ssh-keys。就我而言,我重新生成了一个新的公私密钥对。这不是必要的,只是为了确保我做到了。我还在〜/ .ssh / config中添加了一个新文件,并添加了主机,用户和身份文件,以便使用我朋友的仓库的私钥而不是我的。
最后,在推送他的远程仓库时,我不得不提供类似git push ssh://git@git.doman/git_repo.git的东西。这可能是最重要的一步。我们不应该在ssh://
之后错过git@git.com答案 1 :(得分:0)
最明智的方法是让你的朋友将你的公钥放在那里,而不是生成一个新公钥。
或者您可以使用~/.ssh/config
强制它在连接到此特定主机时使用备用密钥。
如果您正在运行一个(ssh-add keyfile
),也可以将此密钥添加到ssh-agent。
答案 2 :(得分:0)
我不是专家,但我认为您可能需要替换用户目录中的本地私钥(id_rsa)(这在您的机器环境变量中定义),并且应该在名为.ssh的子目录中。首先备份现有密钥,但
答案 3 :(得分:0)
首先谈谈分支,当你克隆你的朋友存储库时,你实际上已经创建了你自己的分支。它恰好是远程跟踪你的朋友分支,这实际上只是缩短你的git-push
命令。
话虽如此,我认为执行此工作流程的首选方法是将github上的朋友项目分支到您自己的存储库。然后,您将仅推送到您的仓库,该仓库应正确设置ssh凭据。然后,您的朋友可以从您的存储库中取出Github有拉取请求,或者您可以告诉您的朋友手动从您的回购中提取。
值得一提的是,此方法仍然允许您从其存储库中获取上游补丁。