contribute上次修改:2026-10-07

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 配置只影响之后创建的提交,不会自动改写已有提交。

署名、认证和授权是三个不同环节:

  1. 署名:commit 记录了谁写了这次修改。
  2. 认证:GitHub 通过 SSH 密钥或 HTTPS 凭据识别访问者。
  3. 授权:仓库权限、组织策略和分支规则决定允许执行哪些操作。

三、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。