0

我和我的朋友在同一个项目中工作,共享同一个 github 存储库。为了揭示我们两个的身份,我的朋友建议并通过在他的本地 PC 中发出命令来掩盖他的身份匹配我的身份。

$ git config --global user.name "XYZ"
$ git config --global user.email "xyz@example.com"

一天结束时,当我为该应用程序获取 git 日志时,我可以看到我们双方所做的所有提交,但所有提交都使用相同的用户名和电子邮件地址。

如何从我朋友的提交中识别我所做的提交?

4

3 回答 3

0

由于git服务器的分布式特性(无论是 GitHub 还是其他)必须接受它收到的提交消息中提供的身份。如果您希望能够验证这些身份,则需要使用 GPG 之类的东西对您的提交进行加密签名。 这个页面讨论了如何做到这一点。假设您已经配置了 GPG,您只需要添加-S到您的提交命令行:

git commit -S -m "this is a test"

您可以使用“git log --show-signature”验证提交身份,这将使您得到如下输出:

commit dadcd364efe5e2751b9ee4ef9a3e9b1b4e2ba4f9
gpg: Signature made Wed Jul 24 08:14:44 2013 EDT
gpg:                using RSA key 0x042DF6CF74E4B84C
gpg: Good signature from "Lars Kellogg-Stedman <lars@oddbit.com>" [ultimate]
Author: Lars Kellogg-Stedman <lars@oddbit.com>
Date:   Wed Jul 24 08:14:38 2013 -0400

    removed things

...尽管这需要您正确管理 GPG 信任网络才能相信签名。

于 2013-07-24T12:15:40.250 回答
0

如果你们都使用相同的作者信息,则您无法知道提交的作者。它应该对每个用户都是唯一的,这就是它的用途。

于 2013-07-24T12:11:07.747 回答
0

请注意git log --show-signatureGit 2.10(2016 年第三季度)中的更改

commit 2376d31
merged tag 'v2.9.3'
gpg: Signature made Fri 12 Aug 2016 09:17:59 AM PDT using RSA key ID 96AFE6CB <=====
gpg: Good signature from "Junio C Hamano <gitster@pobox.com>"
gpg:                 aka "Junio C Hamano <jch@google.com>"
gpg:                 aka "Junio C Hamano <junio@pobox.com>"
Merge: 2807cd7 e0c1cea
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Aug 12 10:02:18 2016 -0700

commit 2376d31
merged tag 'v2.9.3'
gpg: Signature made Fri 12 Aug 2016 09:17:59 AM PDT
gpg:                using RSA key B0B5E88696AFE6CB           <=======================
gpg: Good signature from "Junio C Hamano <gitster@pobox.com>"
gpg:                 aka "Junio C Hamano <jch@google.com>"
gpg:                 aka "Junio C Hamano <junio@pobox.com>"
Merge: 2807cd7 e0c1cea
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Aug 12 10:02:18 2016 -0700

请参阅Linus Torvalds ( )的提交 b624a3e(2016 年 8 月 16 日) 。(由Junio C Hamano 合并 -- --83d9eb0 提交中,2016 年 8 月 19 日)torvalds
gitster

gpg-interface: 验证 pgp 签名时首选“长”密钥格式输出

是的,gpg2 默认已经使用长格式,但是由于兼容性原因,大多数发行版似乎仍然有“gpg”是较旧的 1.x 版本。而旧版本的 gpg 只显示 32 位短 ID,这是相当不安全的。

这实际上对验证本身并不重要:如果验证通过,则 pgp 签名是好的。
但是如果您实际上还没有密钥,并且想要获取它,或者您想准确检查用于验证的密钥并想要检查它,我们应该更精确地指定密钥

事实上,我们应该优先指定整个密钥指纹,但 gpg 实际上并不支持。这真的很可悲。

显示“长”格式可以改善至少显示 64 位指纹的情况。这好多了,即使它并不完美

于 2016-08-22T06:12:30.290 回答