🧰 Git 与 GitHub SSH 指南

✨ 一篇够用的 Git / GitHub / SSH 笔记,适合新电脑初始化、日常查命令、排查连接问题。


🧠 先记住一句话

Git 负责版本管理,GitHub 负责远程托管。

日常最核心的流程就是:

1
修改文件 -> git add -> git commit -> git push

📦 Git 是什么

可以把 Git 理解成一个“文件时间机器 + 协作记录器”。

几个高频概念先混个脸熟:

  • workspace:工作区,你正在改的文件
  • staging area:暂存区,准备提交的内容
  • repository:仓库,保存历史记录的地方
  • commit:一次提交
  • branch:分支
  • remote:远程仓库,比如 GitHub

💡 简化理解:工作区像草稿纸,暂存区像待寄出信封,提交就是正式存档。


💻 安装 Git

🪟 Windows

官方入口:

安装建议:

  1. 直接安装 Git for Windows
  2. 大部分选项保持默认即可
  3. 保留 Git Bash
  4. PowerShell 里也可以照常用 Git

安装后检查:

1
git --version

看到类似输出就说明没问题:

1
git version 2.xx.x

🍎 macOS

1
2
brew install git
git --version

🐧 Linux

Debian / Ubuntu:

1
2
sudo apt update
sudo apt install git

Fedora:

1
sudo dnf install git

CentOS / RHEL:

1
sudo yum install git

⚙️ 首次全局配置

安装完 Git,第一件事就是配身份信息:

1
2
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

查看配置:

1
git config --global --list

查看单项:

1
2
git config --global user.name
git config --global user.email

顺手建议配上这两个:

1
2
git config --global init.defaultBranch main
git config --global color.ui auto

查看所有配置来源:

1
git config --list --show-origin

user.email 最好和 GitHub 上使用的邮箱保持一致。


🔐 GitHub SSH 配置

SSH 的好处:

  • 不用每次推送都输账号密码
  • 更适合长期开发
  • 多仓库、多设备时更顺手

1. 👀 先看本地有没有 key

1
ls ~/.ssh

常见文件:

  • id_ed25519:私钥
  • id_ed25519.pub:公钥
  • id_rsa
  • id_rsa.pub

如果已经有现成的 key,可以先看看是不是你要继续用的那一套。

2. 🪄 生成新的 SSH key

优先推荐 ed25519

1
ssh-keygen -t ed25519 -C "你的GitHub邮箱"

如果环境太老不支持,再用 rsa

1
ssh-keygen -t rsa -b 4096 -C "你的GitHub邮箱"

过程中会提示:

1
Enter file in which to save the key

直接回车即可,默认会保存到:

1
~/.ssh/id_ed25519

然后会让你输入 passphrase

  • 直接回车:方便
  • 设置密码:更安全

3. 🚀 启动 ssh-agent 并添加 key

Windows Git Bash

1
2
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Windows PowerShell

先看服务:

1
Get-Service ssh-agent

启动服务:

1
Start-Service ssh-agent

添加私钥:

1
ssh-add $HOME\.ssh\id_ed25519

macOS / Linux

1
2
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

4. 📋 复制公钥

1
cat ~/.ssh/id_ed25519.pub

复制整行内容,形态大概像这样:

1
ssh-ed25519 AAAA.... your_email@example.com

5. 🌍 添加到 GitHub

GitHub 路径:

  1. Settings
  2. SSH and GPG keys
  3. New SSH key
  4. Title 填设备名,比如 My Laptop
  5. Key 粘贴公钥
  6. 保存

官方文档:

6. ✅ 测试 SSH 连接

1
ssh -T git@github.com

第一次通常会看到:

1
2
The authenticity of host 'github.com (...)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入:

1
yes

成功后一般会看到类似内容:

1
Hi <your-name>! You've successfully authenticated...

测试文档:


🧾 SSH 配置文件

如果你有多个 GitHub 账号,或者想指定不同私钥,可以配置 ~/.ssh/config

单账号示例

1
2
3
4
5
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes

多账号示例

1
2
3
4
5
6
7
8
9
10
11
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

这时远程地址可以写成:

1
2
git@github-personal:username/repo.git
git@github-work:company/repo.git

🔁 多账号时,~/.ssh/config 很值。


🏗️ 新仓库常用流程

📁 本地新建仓库

1
2
3
4
git init
git status
git add .
git commit -m "init"

🔗 关联远程 GitHub 仓库

1
2
3
git remote add origin git@github.com:用户名/仓库名.git
git remote -v
git push -u origin main

说明:

  • origin:远程仓库默认名
  • -u:建立本地和远程分支跟踪关系

📥 克隆远程仓库

1
git clone git@github.com:用户名/仓库名.git

克隆到指定目录:

1
git clone git@github.com:用户名/仓库名.git my-project

⚡ 常用命令速查

🔎 看状态 / 看历史

1
2
3
4
5
git status
git log
git log --oneline
git log --oneline --graph --decorate --all
git show

📌 暂存 / 提交

1
2
3
4
git add .
git add 文件名
git commit -m "提交说明"
git commit --amend

git commit --amend:修改最近一次提交。

🪞 查看差异

1
2
3
git diff
git diff --staged
git diff 分支1..分支2

🌿 分支操作

1
2
3
4
5
6
7
8
9
git branch
git branch -a
git branch 分支名
git switch 分支名
git switch -c 新分支名
git checkout 分支名
git merge 分支名
git branch -d 分支名
git branch -D 分支名

小抄:

  • git switch:更适合切分支
  • git checkout:老牌多功能选手
  • -d:安全删除
  • -D:强制删除

☁️ 远程相关

1
2
3
4
5
6
7
git remote -v
git fetch
git pull
git push
git push -u origin main
git remote remove origin
git remote set-url origin git@github.com:用户名/仓库名.git

🧹 撤销与恢复

撤销工作区修改:

1
2
git restore 文件名
git restore .

撤销暂存区:

1
2
git restore --staged 文件名
git restore --staged .

回退提交:

1
2
3
git reset --soft HEAD~1
git reset --mixed HEAD~1
git reset --hard HEAD~1

区别:

  • --soft:回退提交,保留暂存区和工作区
  • --mixed:回退提交和暂存区,保留工作区
  • --hard:全部回退,危险

反向生成一次新提交:

1
git revert 提交哈希

🧳 暂存现场

1
2
3
4
5
git stash
git stash list
git stash pop
git stash apply
git stash drop

🔁 常见协作流程

日常提交

1
2
3
4
git status
git add .
git commit -m "feat: 增加 xxx"
git push

拉取最新代码

1
git pull

更稳一点的拆开写法:

1
2
git fetch
git merge

新功能分支开发

1
2
3
4
git switch -c feature/login
git add .
git commit -m "feat: add login page"
git push -u origin feature/login

合并分支

1
2
3
4
git switch main
git pull
git merge feature/login
git push

🏷️ 提交信息怎么写

常见前缀:

1
2
3
4
5
6
7
feat: 新功能
fix: 修复问题
docs: 文档修改
style: 格式调整
refactor: 重构
test: 测试相关
chore: 杂项维护

示例:

1
2
3
git commit -m "feat: add user login"
git commit -m "fix: resolve avatar loading error"
git commit -m "docs: update README"

🩹 常见问题排查

git 命令找不到

先试:

1
git --version

如果不行,排查:

  1. Git 是否安装成功
  2. 终端是否重新打开
  3. 环境变量里是否有 Git

❌ SSH 测试失败

检查本地 key:

1
ls ~/.ssh

检查 agent 里有没有加载:

1
ssh-add -l

重新添加:

1
ssh-add ~/.ssh/id_ed25519

详细调试:

1
ssh -vT git@github.com

❌ 推送时报 Permission denied (publickey)

按这个顺序排查:

  1. 本地有没有 SSH key
  2. 公钥有没有加到 GitHub
  3. 远程地址是不是 SSH 格式
  4. ssh-agent 有没有加载私钥
  5. ~/.ssh/config 有没有写错

查看远程地址:

1
git remote -v

SSH 格式应类似:

1
git@github.com:用户名/仓库名.git

如果当前是 HTTPS,可切换成 SSH:

1
git remote set-url origin git@github.com:用户名/仓库名.git

⚔️ 合并冲突

手动处理冲突文件后:

1
2
git add .
git commit -m "fix: resolve merge conflict"

查看当前状态:

1
git status

🧷 最常用命令清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git --version
git config --global --list
git init
git clone git@github.com:用户名/仓库名.git
git status
git add .
git commit -m "message"
git log --oneline
git diff
git branch
git switch -c new-branch
git merge branch-name
git pull
git push
git remote -v
git stash
ssh-keygen -t ed25519 -C "你的GitHub邮箱"
ssh-add ~/.ssh/id_ed25519
ssh -T git@github.com

🎯 推荐记忆顺序

先记这 8 个:

1
2
3
4
5
6
7
8
git clone
git status
git add
git commit -m
git pull
git push
git switch -c
git log --oneline

再补这些:

1
2
3
4
5
6
git diff
git merge
git stash
git restore
git remote -v
ssh -T git@github.com

🚀 新电脑初始化顺序

推荐照这个顺序来:

  1. 安装 Git
  2. git --version
  3. 配置 user.nameuser.email
  4. 生成 SSH key
  5. 添加到 GitHub
  6. 测试 SSH
  7. git clone 一个仓库试跑

命令版:

1
2
3
4
5
6
7
8
git --version
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global init.defaultBranch main
ssh-keygen -t ed25519 -C "你的GitHub邮箱"
ssh-add ~/.ssh/id_ed25519
ssh -T git@github.com
git clone git@github.com:用户名/仓库名.git

🔗 官方参考


🪄 终极超短版

只看最精简流程的话,就是这几步:

1
2
3
4
5
6
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
ssh-keygen -t ed25519 -C "你的GitHub邮箱"
ssh-add ~/.ssh/id_ed25519
ssh -T git@github.com
git clone git@github.com:用户名/仓库名.git

然后日常:

1
2
3
git add .
git commit -m "message"
git push