我的情况如下:有2个人可以访问私人仓库并在代码上一起工作。但是有一个人在其他人的电脑上写了一个代码,现在想要为他的名字而不是那个人的名字。
我已经看到here如何为存储库的另一位作者提交。我已经这样做了,但奇怪的是它并没有要求我提交作者姓名的密码。这不正常。所以人们可以为自己提交一份我没有写过的代码而且我不负责?
答案 0 :(得分:1)
是。使用git,您可以在任何想要的个性下进行提交。但是您可以使用gpg-sign来确保此提交是您的未来:
1。创建密钥:
~$ gpg --gen-key
2。添加您要使用的.gitconfig键:
[user]
....
signingkey = E4634C2C
3。进行签名提交:
~$ git commit -s -m "Signed commit"
但有一些缺点:
答案 1 :(得分:1)
Git不处理任何授权。它的工作方式,您可以使用git config
或--author
参数更改您的身份,以便以您想要的方式提交。这些提交将保留在您的计算机本地,直到您决定推送它们为止。
远程服务器通常选择进行某种身份验证。这通常使用SSH协议完成。此外,许多人添加了一个授权层,限制您访问存储库。例如,在GitHub上,您可能只会推送到您拥有的存储库或您明确获得写访问权的存储库。
但是,此访问控制仅适用于推送更改的行为。因此,如果您有权访问存储库,则可以使用您想要的任何作者推送您想要的任何提交。当提供程序包含推送用户未创作(或提交)的提交时,提供程序可能会添加拒绝推送的检查。但是,通常不需要这种行为。
原因是Git是一个分布式版本控制系统。因此与Subversion不同,人们不必使用相同的集中式服务器,这样就可以确保您只发布自己做出的更改(Subversion实际上只是假设这一点,而“提交”只在服务器上创建)。相反,有可能 - 并且经常需要 - 提交在不同的路径上,直到它们落在中央存储库上(多个存储库也是常见的)。您甚至可以直接与其他开发人员合作,将更改推入或从其私有存储库中提取更改,而无需与某种中央服务器进行交互。然后,当您决定将提交发布到中央服务器时,中央服务器当然不应该因为您包含其他开发人员的提交而拒绝您的更改。
所以不,不能保证其他人不会使用您的“身份”以您的名义创建提交。但是,Git支持签名提交,允许你证明提交是你自己的。然后,任何有兴趣验证它的人都可以检查提交上的签名并验证它是否是由您自己制作的。某些存储库服务器甚至可能要求对推送到服务器的所有提交进行签名,然后在每次提交时验证签名。但这完全是可选的,并不是Git默认带来的东西;因为默认情况下Git只是“stupid content tracker”。