git如何在推送代码时知道我的身份?

9rnv2umw  于 2022-11-20  发布在  Git
关注(0)|答案(2)|浏览(153)

我开始学习如何使用git,我对一些关于安全性的问题很怀疑。
我需要在我的个人电脑和工作电脑之间管理我的代码(在同一个GitHub账户中),所以我在两台电脑上都安装了git。当我克隆我的仓库(个人的或私有的),修改它,然后把它推回去时,它接受推,而不需要验证是谁在推它。
所以我的问题是:git如何知道谁在推送到我的GitHub仓库?如果有人使用“git clone https://github.com/username/myrepo.git",他们能推送到仓库吗?我如何避免这种情况?
我在其他帖子中读到这是不可能的,但我仍然不明白git在哪一步验证谁在推。

k5ifujac

k5ifujac1#

不,任何人都不允许推送到仓库。GitHub上的身份验证要么通过PAT(个人访问令牌),要么通过凭据管理器登录浏览器,要么使用SSH密钥。这三种方式都绑定到您的GitHub帐户。
默认情况下,只有存储库的所有者可以推送到存储库,但是您可以向存储库添加更多用户。
进一步阅读:

cbwuti44

cbwuti442#

git如何知道谁在推送到我的GitHub仓库?
简短的回答是“它不知道”或“Git不知道”。
Git中的每个 commit 都有两个name + email-address + date-and-time-stamp字段,Git称之为 authorcommitter。(Git从user.nameuser.email设置中读取,假设你已经设置了它们1)。一旦提交,这两个设置就无法更改--如果它们是错误的,您必须停止使用该提交并创建一个新的、改进的、包含正确内容的提交。(新的和改进的提交可能看起来完全一样,但是它会有一个不同的大的丑陋的哈希ID,而旧的哈希ID仍然会引用旧的提交。通过使用git commit --amend或类似的方法,你可以将旧的提交“踢出”分支,以便只显示新的已更正提交 。)
knittl answered一样,Git
Hub* 也有GitHub端的访问控制。你必须首先通过GitHub提供的任何方式向GitHub * 认证 *。这个认证过程让GitHub能够决定 * 他们 * 认为你是谁,从而控制他们是否允许git push继续运行。但这不是Git的事情,而是GitHub的事情。
请注意,所有2个虚拟主机提供商(例如,Bitbucket和GitLab)都使用非常相似的身份验证技巧,原因同样显而易见。
1如果你 * 没有 * 设置它们,Git有一组编译的过程,如下所示:
1.它检查user.useConfigOnly,一个布尔配置设置。如果这是true或任何其他等效的布尔值,它将因致命错误而终止。
1.否则,如果Git被编译为这样做,它会使用一些操作系统和/或构建特定的方法来 * 猜测 * 你的姓名和电子邮件地址。
1.最后,在所有其他操作都失败后,它将因您在步骤1中选择的相同致命错误而终止。
user.useConfigOnly的意义在于,如果您希望在每个存储库中设置user.nameuser.email,而不是在用户全局状态下进行设置,则可以强制在每个存储库中设置user.nameuser.email
2可能有一些没有,但我想知道谁会使用它们。

相关问题