Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
如何区分两个碰巧拥有相同配置的git用户?_Git - Fatal编程技术网

如何区分两个碰巧拥有相同配置的git用户?

如何区分两个碰巧拥有相同配置的git用户?,git,Git,让我们假设有两个不同的git用户,U1和U2。让我们进一步假设它们具有相同的配置,例如 git config user.name 是完全相同的,但它们的公钥不同。如果他们中的一个做出了承诺,有没有办法告诉他们中的哪一个做出了承诺?这个答案可能不能完全解决你的问题,但我相信它有好处,从长远来看,它会避免你看到的东西 通过键入git log,您将看到每个提交都列出如下内容: commit f2a238924e89ca1d4947662928218a06d39068c3 Author: U1 <

让我们假设有两个不同的git用户,U1和U2。让我们进一步假设它们具有相同的配置,例如

git config user.name

是完全相同的,但它们的公钥不同。如果他们中的一个做出了承诺,有没有办法告诉他们中的哪一个做出了承诺?

这个答案可能不能完全解决你的问题,但我相信它有好处,从长远来看,它会避免你看到的东西

通过键入
git log
,您将看到每个提交都列出如下内容:

commit f2a238924e89ca1d4947662928218a06d39068c3
Author: U1 <U1a@yourcompany.com>
Date:   Mon Sep 5 17:30:28 2014 -0500

    Comment goes here

 SomeClass.java | 42 ++++++++++++++++++++++++-----------------
 1 file changed, 38 insertion(+), 4 deletions(-)
提交f2a238924e89ca1d4947662928218a06d39068c3
作者:U1
日期:2014年9月5日星期一17:30:28-0500
评论就在这里
SomeClass.java | 42++++++++++++++++++++++++-----------------
1个文件更改,38个插入(+),4个删除(-)

即使他们可能有相同的用户名,如果他们的电子邮件不同,那么你仍然可以很容易地区分提交。因此,如果您的组织强制执行a)所有用户在Git帐户中列出他们的工作电子邮件,b)组织强制每个人使用唯一的电子邮件,那么这个问题将永远不会发生。

这个答案是受@Torek评论的启发而得出的。事实上,有可能使用PGP标志,并期望每个访问回购协议的开发人员都能使用它。PGP签名应该每个用户都是唯一的,据我所知,它可以非常安全,因为它使用了。如果用户使用签名来签署他们的提交,那么即使他们的姓名和电子邮件看起来相等,也可以通过所述公钥来识别他们。更多信息和信息

编辑:

“在实践中,大多数项目似乎只对附加到发布版本的带注释的标记(使用相同的加密签名方法)进行签名,然后依靠标记->提交->(所有内容)的结构来覆盖发布版本和在此之前的所有历史。”


@torek,2016-09-06

假设电子邮件地址也相同:不直接。如果他们对提交进行签名(
-S
GPG签名,而不仅仅是
-S
签名),并且具有不同的GPG密钥,您可以区分它们。检查。这是一个大主题,您可以从开始了解概述。总体思路是使用加密算法创建数字签名,该算法允许具有某种共享信任的用户验证其他用户的身份。引导信任机制对于使其正常工作至关重要,信任撤销(例如,当某人的秘密密钥被公开时)会带来复杂性。签名使用密钥对(私钥和公钥)。您必须知道用于验证数字签名的用户U1和U2的公钥。有些理论是我无法理解的(我了解基本的RSA,但不了解椭圆曲线函数),但在(是的,就用法而言,它是
git log--show signature
来验证数字签名)@LajosArpad我已经睡着了,所以你最好使用你自己的答案。我唯一要补充的是,在实践中,大多数项目似乎只对附加到发布版本的带注释的标记(使用相同的加密签名方法)进行签名,然后依赖于标记->提交->的Merkle树结构(一切)这是一个完全理论化的问题,我假设名字和电子邮件是相似的。这个问题是在这里的一次辩论中提出的:然后看看@torek的评论,他基本上了解Git的一切。是的,Tim,的确,他似乎对Git非常了解。不过我喜欢你的回答:)@TimBiegeleisen:肯定不是所有的,Git也是一个相当大的话题。:-)