精彩内容马上呈现...
BI1SZB

GitHub新电脑配置与首次推送技巧

适用场景:更换电脑、使用新服务器、重新安装系统,或者第一次在某台设备上向自己的 GitHub 仓库推送代码。


一、理解三个互相独立的配置

在新电脑上使用 GitHub 时,最容易混淆的是下面三件事:

1. Git 提交身份

由以下配置决定:

git config user.name
git config user.email

它们决定每次提交记录中的作者是谁。

需要注意:

  • user.name 不等于 GitHub 登录账号;
  • user.email 最好使用已经绑定并验证到 GitHub 的邮箱;
  • 也可以使用 GitHub 提供的 noreply 邮箱;
  • 这两个配置不会决定你是否有权限推送代码。

2. GitHub 身份认证

它决定 GitHub 是否允许当前电脑执行 pushpull 等操作。

常见认证方式包括:

  • 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 ManagerWindows、新手、临时电脑浏览器登录,配置简单
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。
分享到