git用户与github
这里主要是区分一些概念:git里面配置信息,GitHub里的信息,等等,甚至你可能会把这些和操作系统的用户弄混。
要知道git是一种分布式管理控制系统,是工具和命令集合,基于它的 代码托管平台 有很多种,常见的GitHub、Gitee(码云)等
如果你要做多设备、多账户管理,就可以了解一下
一、git config
git config 中的 user.name 和 user.email 用于填写 commit 的作者、提交者信息。 它们是提交署名,不是 GitHub 登录凭据。
几个容易混淆的身份:
| 名称 | 含义 | 示例 |
|---|---|---|
| 操作系统用户 | 决定进程权限、文件属主和家目录 | Linux 的普通用户、root |
| Git 提交署名 | 保存在 commit 中的姓名和邮箱 | user.name、user.email |
| GitHub 账户 | GitHub 平台上的身份及权限 | 个人账户或组织成员 |
| GitHub SSH 用户名 | GitHub SSH 服务统一使用的远端用户名 | git@github.com 中的 git |
配置作用范围
--system:系统级配置,可被用户级或仓库级配置覆盖。--global:当前操作系统用户的配置,通常位于~/.gitconfig。--local:当前仓库的配置,保存在.git/config,优先级高于前两者。
同一台 Linux 设备上的普通用户与 root 拥有各自的家目录、Git 配置和 SSH 配置。不同电脑之间的 --global 配置也不会自动同步。
查看配置:
git config --global --list
git config --local --list
git config --show-origin --get user.name
git config --show-origin --get user.email
二、提交署名与 GitHub 的关系
GitHub 根据 commit 中保存的邮箱,将提交关联到 GitHub 账户。通常使用账户已关联并验证的邮箱,或者 GitHub 提供的 noreply 邮箱。
- 邮箱匹配可以帮助关联提交,但贡献图还受分支和仓库类型等条件影响。
- 作者姓名来自 commit 中保存的姓名,通常由
user.name设置。 - 修改 Git 配置只影响之后创建的提交,不会自动改写已有提交。
署名、认证和授权是三个不同环节:
- 署名:commit 记录了谁写了这次修改。
- 认证:GitHub 通过 SSH 密钥或 HTTPS 凭据识别访问者。
- 授权:仓库权限、组织策略和分支规则决定允许执行哪些操作。
三、SSH 密钥与仓库权限
将公钥添加到 GitHub 账户的 Settings → SSH and GPG keys 后,该公钥可用于认证该账户。
私钥保存在本机,不上传到 GitHub 或代码仓库。有点类似于SSH密钥登录
账户 SSH 密钥并不是“可以随意操作所有仓库的万能钥匙”。访问范围仍由账户权限决定,分支保护和仓库规则也可能限制推送。
部署密钥(Deploy key)添加在单个仓库的设置中,仅用于该仓库,默认只读,可以额外开启写权限。账户密钥与部署密钥的用途不同。
一个仓库可以授权多个开发者。每个人使用自己的账户和认证凭据,本地提交署名可以不同;拥有写权限才可以直接向允许的分支推送。没有直接写权限时,公开项目通常通过 fork 和 Pull Request 参与。
四、Git、GitHub 与 gh
| 工具或服务 | 作用 | 常见认证方式 |
|---|---|---|
| Git | 管理本地版本历史,执行 clone、pull、push |
SSH,或 HTTPS 凭据 |
| GitHub | 托管仓库并管理账户、权限、Issue、PR、Actions | 网页登录、SSH、Token 等 |
GitHub CLI(gh) |
在命令行管理 GitHub 平台功能 | 浏览器授权或 Token,也可辅助配置 Git |
五、多用户与多设备
同一个 GitHub 账户可以在多台设备上使用。通常每台设备生成自己的 SSH 密钥,再把多把公钥添加到同一个账户,便于单独撤销某台设备的访问权。
对于ubuntu系统,密钥应放在实际使用它的操作系统用户的 ~/.ssh/ 中。日常不应混用普通用户与 root 执行 Git,否则可能读取不同的 Git 配置和密钥,还可能在仓库里生成不同属主的文件。
电脑登录远程设备的 SSH 密钥,与远程设备访问 GitHub 的 SSH 密钥,是两段独立连接,可以使用不同密钥。
常规 git clone 会下载版本历史和被跟踪文件,并为新仓库建立远程配置;不会复制另一台设备的 ~/.gitconfig、~/.ssh/,也不会照搬原工作区 .git/config 中的个人设置。克隆后仍需在新设备配置提交署名、认证和运行环境。
安装与认证步骤见 ubuntu配置git和关联GitHub。
留言区
不收集任何个人信息;昵称只绑定浏览器里的随机 Cookie。