Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用一组不同的ssh密钥从git中提取_Git_Ssh - Fatal编程技术网

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

如何使用一组不同的ssh密钥从git中提取,git,ssh,Git,Ssh,user1使用存储在~/.ssh下的ssh密钥签出了~/proj1下的源代码 user2希望执行“git pull”以同步~/proj1下的更改,并且必须使用ssh密钥来执行此操作 user2修改了~/proj1/.git/config以将url反映为user2@host:/foo/proj1.git 使用user2的凭证完成git拉取或后续推取的过程是什么?我不确定我是否完全理解这里的内容 两个用户都以用户1的帐户登录?否则实际上会有两个文件夹~/proj1,每个用户帐户的主文件夹中都有一个

user1使用存储在~/.ssh下的ssh密钥签出了~/proj1下的源代码 user2希望执行“git pull”以同步~/proj1下的更改,并且必须使用ssh密钥来执行此操作

user2修改了~/proj1/.git/config以将url反映为user2@host:/foo/proj1.git
使用user2的凭证完成git拉取或后续推取的过程是什么?

我不确定我是否完全理解这里的内容

两个用户都以用户1的帐户登录?否则实际上会有两个文件夹~/proj1,每个用户帐户的主文件夹中都有一个

不管这个细节如何,我的理解是,您希望两个用户共享同一个工作区。对我来说,这听起来是个非常糟糕的主意。要做一个比较,就像在一辆车上安装两个方向盘,使两个前排座椅都成为驾驶员

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

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

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

如果您希望它们共享更改而不经过中心实例,则它们始终可以相互拉取或相互推送(两者都可以实现相同的效果)。这实际上是git相对于SVN的优点。“中心”存储库没有任何特殊功能,它只是在语义上具有这种功能,因为它适合您的工作流程。所有存储库都是平等的,您可以向其中任何一个库推送或从中拉出。这一切都是可行的,因为每个人都有自己的存储库。我很确定我们可以解决这个问题,并允许通过精心制作的别名和脚本进行共享,但为什么呢!??共享存储库将使事情变得不必要的困难


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

您必须使用
~/.ssh/config
文件为存储库定义密钥,如前所述


(我认为这个问题是重复的,因为它与另一个问题非常接近)

实际上它是一个EC2实例,用户以EC2用户的身份登录,因此会产生混淆。所以基本上你只有一个帐户,一个登录,多个用户可以在同一个工作区内玩?同样,这里最好的选择是让每个登录到系统的用户创建他们自己的工作文件夹并克隆他们自己的工作区。我想知道是否有更简单的方法,如果没有,我将创建一个新用户。您可以使用同一个用户登录,但是每个用户都应该有自己的源代码文件夹。问题不在于所有人都使用同一个帐户,而在于他们都在同一个代码文件夹中编码。也就是说,共享同一个帐户将需要对git工作流进行一些调整。问题在于它在尝试共享同一个linux用户帐户时加载ssh密钥的位置。