通过SSH克隆Git仓库,通过HTTPS推送修改。

27

我有一组私有Git存储库在BitBucket上。 我想通过SSH克隆它们,以便可以自动化克隆而无需请求密码。 但是,我想要使用HTTPS进行推送,因为我想要使用不同的用户名推送。

这台电脑是普通电脑,我想区分谁推送更改,但我不关心谁克隆它们。

有没有办法做到这一点? 谢谢!

1个回答

41

你可以使用两个或更多不同的远程仓库来实现。默认情况下,当你克隆一个远程仓库时,origin 远程仓库会自动为你创建。但是每次在 git 命令行中字面上指定一个不同的仓库也是可以的,例如:

git push https://git-server/myrepo.git branch

但如果您计划多次使用它们,将其作为命名远程资源添加会更加方便。以下是更完整的示例记录:

git clone ssh://user1@git-server/myrepo.git
cd myrepo
git remote add push https://git-server/myrepo.git

然后您可以使用git fetch origingit pull更新本地副本,然后可以使用例如git push push branch推送(请注意,此处的第二个push是远程名称)。这样,您还可以使用不同的用户指定不同的ssh远程地址:

git remote add push2 ssh://user2@git-server/myrepo.git

然后,您可以执行git push push2 branch来通过SSH作为不同用户进行推送。


谢谢您的回复!我其实知道我可以这样做,但没想到可以那样做 :) 关于添加第二个具有不同用户的SSH,我只有一个问题:在这种情况下,SSH密钥是如何工作的?因为我已经将密钥分配给了user1,所以user2能够推送吗?还是user2需要部署另一个SSH密钥?谢谢! - Javi
要使用的ssh密钥取决于服务器上作为不同用户的authorized_keys已知的ssh密钥。如果两个用户在其〜/ .ssh / known_hosts文件中具有相同的公共密钥,则对客户端也将起作用。否则,必须使用不同的密钥。 - Michael Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接