适用场景:更换电脑、使用新服务器、重新安装系统,或者第一次在某台设备上向自己的 GitHub 仓库推送代码。
一、理解三个互相独立的配置
在新电脑上使用 GitHub 时,最容易混淆的是下面三件事:
1. Git 提交身份
由以下配置决定:
git config user.name
git config user.email
它们决定每次提交记录中的作者是谁。
需要注意:
user.name不等于 GitHub 登录账号;user.email最好使用已经绑定并验证到 GitHub 的邮箱;- 也可以使用 GitHub 提供的
noreply邮箱; - 这两个配置不会决定你是否有权限推送代码。
2. GitHub 身份认证
它决定 GitHub 是否允许当前电脑执行 push、pull 等操作。
常见认证方式包括:
- HTTPS + 浏览器登录;
- GitHub CLI;
- SSH Key;
- Personal Access Token;
- GitHub Desktop 或 IDE 登录;
- Deploy Key。
3. 远程仓库地址
远程仓库地址决定 Git 使用哪种方式连接 GitHub。
HTTPS 地址示例:
https://github.com/用户名/仓库名.git
SSH 地址示例:
git@github.com:用户名/仓库名.git
因此,一个完整的 GitHub 推送过程可以概括为:
配置提交作者
→ 配置 GitHub 认证
→ 确认远程仓库地址
→ 提交代码
→ 推送到 GitHub
二、安装并检查 Git
首先检查电脑上是否已经安装 Git:
git --version
如果看到类似下面的输出,说明 Git 已经安装:
git version 2.47.1
Windows
通常安装 Git for Windows。
安装后可以使用:
- PowerShell;
- Windows Terminal;
- Git Bash;
- VS Code 终端。
Ubuntu / Debian
sudo apt update
sudo apt install git
安装完成后再次检查:
git --version
三、配置 Git 提交作者信息
在新电脑上,通常需要先配置提交作者。
1. 全局配置
全局配置会应用到当前用户的大多数 Git 仓库:
git config --global user.name "你的名字或GitHub用户名"
git config --global user.email "你的GitHub邮箱"
例如:
git config --global user.name "yourname"
git config --global user.email "your_email@example.com"
检查配置:
git config --global user.name
git config --global user.email
也可以查看全部全局配置:
git config --global --list
2. 仅为当前仓库配置
如果一台电脑上同时使用个人账号和工作账号,可以只为当前仓库设置作者:
cd 项目目录
git config user.name "当前仓库使用的名字"
git config user.email "当前仓库使用的邮箱"
不加 --global 时,配置只作用于当前仓库。
检查当前仓库实际使用的作者信息:
git config user.name
git config user.email
重要区别
Git提交作者 ≠ GitHub登录账号
即使 SSH 认证使用的是个人账号,提交记录也可能写着另一个邮箱。
四、选择合适的 GitHub 认证方式
常见认证方式及适用场景如下:
| 方式 | 适用场景 | 特点 |
|---|---|---|
| HTTPS + Git Credential Manager | Windows、新手、临时电脑 | 浏览器登录,配置简单 |
| GitHub CLI | 希望快速完成 GitHub 登录 | 命令统一,操作方便 |
| SSH Key | 长期使用的开发电脑、Ubuntu、远程服务器 | 稳定,不需要重复网页登录 |
| Personal Access Token | 脚本、特殊工具、无浏览器环境 | 权限可控,但需要安全保存 |
| GitHub Desktop / IDE 登录 | 偏好图形界面的用户 | 操作直观 |
| Deploy Key | 部署服务器、单仓库自动化 | 可限制为单个仓库 |
推荐选择:
- Windows 个人电脑:HTTPS 或 GitHub CLI;
- Ubuntu 开发电脑:SSH;
- 长期使用的远程服务器:SSH 或 Deploy Key;
- 临时电脑:HTTPS 浏览器登录;
- 自动化部署:Deploy Key 或专用 Token。
五、使用 SSH Key 认证
SSH 是长期开发电脑和 Linux 服务器上非常常见的认证方式。
整体流程:
本地生成密钥对
→ 私钥保留在本机
→ 公钥上传到 GitHub
→ 测试 SSH 连接
→ 仓库使用 SSH 地址
→ push
1. 检查已有 SSH Key
ls -al ~/.ssh
常见文件:
id_ed25519
id_ed25519.pub
id_rsa
id_rsa.pub
其中:
- 没有
.pub后缀的是私钥; - 有
.pub后缀的是公钥。
私钥不能上传、分享或公开。
2. 生成 SSH Key
推荐使用 Ed25519:
ssh-keygen -t ed25519 -C "你的GitHub邮箱"
系统会提示保存路径。
只有一个 GitHub 账号时,可以直接按回车,使用默认路径:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
随后可以设置密钥密码。
如果已有默认 key,不想覆盖,可以指定文件名:
ssh-keygen -t ed25519 -C "你的GitHub邮箱" -f ~/.ssh/id_ed25519_yourname
长期使用的个人电脑建议设置密码;无人值守服务器需要根据部署方式决定。
3. 启动 ssh-agent(如需)
eval "$(ssh-agent -s)"
加载私钥:
ssh-add ~/.ssh/id_ed25519
检查:
ssh-add -l
ssh-agent 会暂时保存解锁后的私钥,避免每次 push 都重新输入密钥密码。
4. 复制公钥
cat ~/.ssh/id_ed25519.pub
复制输出的完整一行。
不要执行并复制下面文件的内容:
cat ~/.ssh/id_ed25519
因为这是私钥。
5. 上传公钥到 GitHub
进入 GitHub:
头像
→ Settings
→ SSH and GPG keys
→ New SSH key
建议填写:
- Title:设备名称,例如
Windows-PC-2026; - Key type:Authentication Key;
- Key:粘贴
.pub文件内容。
6. 测试 SSH
ssh -T git@github.com
第一次连接可能提示是否继续:
Are you sure you want to continue connecting?
确认后输入:
yes
成功时通常会看到:
Hi 用户名! You've successfully authenticated, but GitHub does not provide shell access.
这表示认证成功,不是报错。
7. 确认仓库使用 SSH 地址
查看:
git remote -v
SSH 地址应类似:
git@github.com:用户名/仓库名.git
如果当前是 HTTPS,可以修改:
git remote set-url origin git@github.com:用户名/仓库名.git
再次检查:
git remote -v
8. 多账号时的 SSH 配置 ~/.ssh/config
单账号并使用默认密钥时,一般不需要配置该文件。
当遇到下面这些情况时需要进行多账号配置:
- 一台电脑上有多个 GitHub 账号;
- 不同账号使用不同 SSH Key;
- 密钥文件使用了自定义名称;
- 同时连接 GitHub、GitLab 和公司 Git 服务。
配置流程
例如你有:
~/.ssh/id_ed25519_personal
~/.ssh/id_ed25519_work
编辑:
nano ~/.ssh/config
写入:
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
个人仓库远程地址:
git remote set-url origin git@github-personal:personal/project.git
公司仓库:
git remote set-url origin git@github-work:company/project.git
这里的:github-personal和github-work,只是你自己定义的 SSH 主机别名。
测试时分别使用:
ssh -T git@github-personal
ssh -T git@github-work
然后为不同仓库设置对应提交身份:
git config user.name "个人名字"
git config user.email "个人邮箱"
或:
git config user.name "工作名字"
git config user.email "工作邮箱"
注意:SSH 账号和 commit 作者仍然是两个独立系统。
可能出现这种情况:
使用个人 SSH Key 成功 push
但 commit 作者邮箱写成了公司邮箱
push 仍然能成功,只是 GitHub 上显示的提交作者可能不符合预期。
六、使用 HTTPS 和 Git Credential Manager
HTTPS 远程地址示例:
https://github.com/用户名/仓库名.git
这种方式特别适合 Windows 和临时电脑。
操作步骤
先配置作者信息:
git config --global user.name "你的名字"
git config --global user.email "你的GitHub邮箱"
克隆仓库:
git clone https://github.com/用户名/仓库名.git
或者修改现有仓库的远程地址:
git remote set-url origin https://github.com/用户名/仓库名.git
执行:
git push
正常情况下,Git Credential Manager 会打开浏览器,让你登录并授权 GitHub。
登录成功后,凭据通常会保存在系统凭据管理器中。
Windows 登录了错误账号
如果出现类似:
Permission to 某用户/某仓库.git denied to 另一个账号
可能是 Windows 凭据管理器缓存了错误账号。
处理路径:
控制面板
→ 用户账户
→ 凭据管理器
→ Windows 凭据
删除和以下内容有关的凭据:
github.com
git:https://github.com
然后重新执行:
git push
系统会重新要求登录。
七、使用 GitHub CLI 登录
GitHub CLI 的命令是:
gh
检查是否安装:
gh --version
登录:
gh auth login
常见选择:
GitHub.com
HTTPS
Login with a web browser
Authenticate Git with your GitHub credentials? Yes
检查登录状态:
gh auth status
登录完成后,可以直接使用:
git pull
git push
GitHub CLI 还可以创建和克隆仓库:
gh repo clone 用户名/仓库名
gh repo create
gh pr create
gh issue list
对于 Windows 用户,GitHub CLI 通常是最省事的认证方式之一。
八、将已有本地项目上传到新的 GitHub 仓库
假设电脑上已经有项目文件,但还没有 Git 仓库。
1. 进入项目目录
cd /path/to/project
2. 检查敏感文件
在执行 git add . 之前,先确认没有准备上传以下内容:
.env
账号密码
API Token
SSH私钥
数据库文件
node_modules
venv
__pycache__
数据集
模型权重
构建缓存
建议创建 .gitignore。
Python 项目示例:
__pycache__/
*.pyc
.venv/
venv/
.env
.vscode/
.idea/
Node.js 项目示例:
node_modules/
dist/
.env
.env.*
!.env.example
.vscode/
.idea/
如果文件已经被 Git 跟踪,后来加入 .gitignore 并不会自动取消跟踪。
需要执行:
git rm --cached 文件名
3. 初始化 Git 仓库
git init
将默认分支改为 main:
git branch -M main
4. 检查作者身份
git config user.name
git config user.email
没有配置时设置:
git config user.name "你的名字"
git config user.email "你的GitHub邮箱"
5. 创建第一次提交
git status
git add .
git status
git commit -m "Initial commit"
第二次执行 git status 是为了确认没有误提交敏感文件。
6. 添加远程仓库
SSH:
git remote add origin git@github.com:用户名/仓库名.git
HTTPS:
git remote add origin https://github.com/用户名/仓库名.git
检查:
git remote -v
7. 首次推送
git push -u origin main
-u 会建立本地分支与远程分支之间的跟踪关系。
之后日常使用:
git add .
git commit -m "说明本次修改"
git push
九、远程仓库已经存在时的正确操作
情况一:GitHub 上已经有完整项目
不要重新执行:
git init
正确方式是直接克隆。
SSH:
git clone git@github.com:用户名/仓库名.git
HTTPS:
git clone https://github.com/用户名/仓库名.git
进入仓库:
cd 仓库名
git status
git branch -a
此时:
.git已存在;origin已配置;- Git 历史已下载;
- 不需要重新添加远程仓库。
如果远程有 custom 分支:
git fetch origin
git switch -c custom --track origin/custom
如果本地已经存在 custom:
git switch custom
情况二:GitHub 新仓库中已经有 README
如果创建 GitHub 仓库时勾选了:
- Add a README;
- Add
.gitignore; - Add license;
那么远程已经存在一次提交。
如果本地也有独立提交,直接 push 可能出现:
rejected
fetch first
可以先拉取并合并:
git pull origin main --allow-unrelated-histories
解决冲突后:
git add .
git commit
git push -u origin main
更简单的做法是:
准备上传已有本地项目时,GitHub 新建仓库不要初始化 README、License 或 .gitignore。