如何使用一组不同的ssh密钥从git中提取

时间:2011-10-14 05:32:12

标签: git ssh

user1使用存储在〜/ .ssh下的ssh密钥检出了〜/ proj1下的源代码 user2想要执行“git pull”来同步〜/ proj1下的更改,并且他必须使用他的ssh键执行此操作。

user2 modified~ / proj1 / .git / config将url反映为user2 @ host:/foo/proj1.git 使用user2的凭证完成git pull或后续推送的过程是什么?

2 个答案:

答案 0 :(得分:0)

我不确定我完全理解这里......

两位用户都是在用户1的帐户下登录的?否则在每个用户帐户的主文件夹中实际上会有两个文件夹〜/ proj1。

无论这个细节如何,我理解的是你希望两个用户共享同一个工作区。对我来说这听起来是一个非常糟糕的主意。为了进行比较,就像在汽车中安装两个方向盘一样,这样前排座椅就成了司机。

为什么您希望两个不同的用户使用相同的工作区?这完全违背了git或任何其他源控制机制的目的。

如果它们都在同一工作空间中工作,您如何辨别哪个用户进行了哪些更改。当然,如果你找到这个问题的解决方案,对git执行的实际操作将使用用户自己的证书完成,但这并不意味着更改实际上是他的开始。实际上,这将消除知道谁做出什么行动的任何有用性,因为无法确切地知道谁做了什么。

在我看来,解决这种困境的最佳(也是唯一可行的)解决方案是甚至不尝试。让每个用户在他自己的主文件夹下进行git克隆。每个用户都有自己的git实例,配置为使用自己的凭据和人口统计信息,每个用户都会将更改推送到他们克隆的任何实例。

如果您希望他们在不经过中心实例的情况下共享更改,他们可以始终互相拉扯或推送到彼此(或者将达到相同的效果)。这实际上是与SVN相对的git之美。 “中央”存储库具有任何特殊功能,它只是在语义上,因为它适合您的工作流程。所有存储库都处于平等地位,您可以推送或拉出任何一个存储库。这一切都有效,因为每个都有自己的存储库。我很确定我们可以解决这个问题并允许通过巧妙制作的别名和脚本进行共享,但为什么呢?共享存储库会使事情变得不必要。

如果您没有集中式存储库,您可以让用户2克隆用户1的存储库。不是非常漂亮,因为它的正常工作流程依赖于1,但它在git自然工作流程中工作。

答案 1 :(得分:0)

您必须使用~/.ssh/config文件来定义存储库的密钥,如here所述。

(我将此问题视为重复,因为它与其他问题非常接近)