本文整理了一份全面的Git新手速查表,涵盖从安装配置到日常开发全流程。
主要内容包括:
1)安装配置(SSH设置、首次配置);
2)项目初始化与首次推送;
3)日常开发流程(状态查看、提交推送规范);
4)分支管理与合并;
5)撤销操作与历史恢复;
6)冲突处理技巧;
7)文件删除与历史清理;
8).gitignore配置;
9)常见错误解决方案。
特别强调了git status、git log、标准提交三连(add/commit/push)等核心命令,以及SSH替代HTTPS、自动设置上游分支等实用配置。
附有VSCode快捷键和命令别名建议,帮助开发者高效使用Git进行版本控制。
关联阅读推荐:
本次操作涉及的 Git 命令汇总表
| 阶段 | 命令 | 作用说明 | 本次实际场景 |
|---|---|---|---|
| 配置 | git config --global user.name "用户名" |
设置全局用户名(提交时显示) | 首次配置 Git 身份 |
git config --global user.email "邮箱" |
设置全局邮箱 | 同上 | |
git config --global push.autoSetupRemote true |
首次推送时自动建立上下游关联 | 避免每次手动加 -u |
|
ssh-keygen -t rsa -b 4096 -C "邮箱" |
生成 SSH 密钥对 | 解决 HTTPS 连接不稳定问题 | |
cat ~/.ssh/id_rsa.pub |
查看公钥,添加到 GitHub | 配置 SSH 免密推送 | |
ssh -T git@github.com |
测试 SSH 连接是否成功 | 验证 SSH 配置 | |
| 初始化 | git init |
在当前目录初始化本地仓库 | 新建项目时使用 |
git branch -M main |
将默认分支重命名为 main |
与 GitHub 默认分支名对齐 | |
git remote add origin <url> |
添加远程仓库地址(SSH/HTTPS) | 关联本地与远程 | |
git remote -v |
查看远程仓库地址 | 确认远程配置正确 | |
| 提交 | git status |
查看工作区、暂存区状态 | 提交前/出问题时必看 |
git add . |
添加所有修改到暂存区 | 批量提交 | |
git commit -m "提交信息" |
将暂存区内容提交到本地仓库 | 生成提交记录 | |
git push -u origin main |
首次推送并建立上下游追踪 | 将本地代码推送到远程 | |
git push |
推送当前分支到关联的远程分支 | 日常推送 | |
| 文件删除/撤销 | git rm --cached <文件> |
从 Git 仓库删除,保留本地文件 | 想删远程、留本地 |
git rm <文件> |
从 Git 仓库和本地同时删除 | 彻底删除文件(⚠️ 谨慎) | |
git reset HEAD <文件> |
撤销暂存区的文件 | 误 git add 后的撤销 |
|
git checkout -- <文件> |
用 Git 仓库恢复工作区文件 | 丢弃工作区修改 | |
| 分支/合并/冲突 | git pull origin main --allow-unrelated-histories |
拉取远程代码,允许合并不相关历史 | 解决本地与远程分叉 |
git merge --abort |
放弃当前合并,回到合并前状态 | 冲突复杂时"重启" | |
git checkout --theirs <文件> |
合并冲突时,采用远程版本 | 冲突解决时选择保留哪一方 | |
git add <文件> |
标记冲突已解决 | 冲突解决后加入暂存区 | |
git commit -m "..." |
完成合并提交 | 冲突解决后的收尾 | |
| 历史查看 | git log --oneline -5 |
查看最近5条提交(简洁) | 快速看提交历史 |
git log --oneline --all -- <文件> |
查看指定文件的所有提交记录 | 检查文件是否在历史中存在 | |
git ls-files |
查看当前 Git 跟踪的文件列表 | 确认哪些文件在仓库中 | |
| 彻底清理(未最终采用) | git filter-repo --path <文件> --invert-paths |
从历史中彻底删除指定文件 | 想彻底抹去敏感文件历史 |
git push --force --all |
强制推送所有分支 | 配合历史重写使用(⚠️ 影响协作者) |
本次核心问题与关键命令对应表
| 遇到的问题 | 关键诊断命令 | 最终解决命令 |
|---|---|---|
| HTTPS 连接被重置 | ssh -T git@github.com |
改用 SSH:git remote set-url origin git@github.com:... |
| 推送时无上游分支 | git status |
git push -u origin main 或配置 push.autoSetupRemote |
| 本地与远程历史分叉 | git log --oneline --all |
git pull origin main --allow-unrelated-histories |
| 合并冲突(modify/delete) | git status |
git merge --abort → git rm --cached → 重新提交 |
| 本地文件误删 | git log --oneline --all -- <文件> |
git checkout <commit-id> -- <文件> |
| 提交历史中有敏感文件 | git log --oneline --all -- <文件> |
最终方案:删除远程仓库 + 重建 + 添加 .gitignore |
总结
这次经历中,最常用的命令是:
-
git status------ 任何时候不确定,第一个执行它 -
git log --oneline------ 看清历史再操作 -
git add+git commit+git push------ 标准提交三连
最有价值的两个配置:
-
SSH 替代 HTTPS ------ 解决网络问题
-
push.autoSetupRemote true------ 避免每次手动关联上游
如果你希望我把这张表也整理成一篇独立的小文档(比如"Git 新手速查表"),我可以继续帮你补充完整。
补充完整
好的,我把这份 Git 新手速查表 补充完整,按真实使用场景分类,涵盖从安装配置到日常开发、冲突处理、历史管理的所有常用命令,方便你和读者随时查阅。
Git 新手速查表(完整版)
基于一次完整的 Git 实战经验整理,涵盖从安装配置到日常开发、问题排查的所有常用命令。
一、安装与配置
1.1 Windows 安装 Git
| 步骤 | 推荐选项 | 说明 |
|---|---|---|
| 默认编辑器 | Use Visual Studio Code | 别选 Vim,新手会卡住 |
| PATH 环境 | Git from command line and also from 3rd-party software | 让 Git 在 CMD/PowerShell/VS Code 终端都能用 |
| HTTPS 后端 | Use OpenSSL | 跨平台一致,兼容性好 |
| 行尾转换 | Checkout Windows-style, commit Unix-style | 避免跨平台换行符冲突 |
| 终端模拟器 | Use MinTTY | 比 Windows 默认终端好用 |
| Git Pull 行为 | Default (fast-forward or merge) | 新手最安全 |
| 凭据管理器 | Git Credential Manager | 记住账号密码,不用重复输入 |
| 文件系统缓存 | 勾选 | 提升 Git 性能 |
| 符号链接 | 不勾选 | Windows 上支持不好,前端很少用 |
1.2 首次配置
bash
# 设置用户名和邮箱(必须)
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"
# 设置默认分支名为 main(可选,推荐)
git config --global init.defaultBranch main
# 自动设置上游分支(省去每次 -u 的麻烦)
git config --global push.autoSetupRemote true
# 查看所有配置
git config --global --list
1.3 SSH 配置(解决 HTTPS 连接问题)
bash
# 生成 SSH 密钥(一路回车)
ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"
# 查看公钥,复制后添加到 GitHub/GitLab
cat ~/.ssh/id_rsa.pub
# 测试 SSH 连接
ssh -T git@github.com # GitHub
ssh -T git@gitlab.com # GitLab
ssh -T git@gitee.com # Gitee
# 将远程仓库地址从 HTTPS 改为 SSH
git remote set-url origin git@github.com:用户名/仓库名.git
二、新建项目与初始化
| 命令 | 说明 |
|---|---|
git init |
在当前目录初始化 Git 仓库 |
git init 项目名 |
创建新目录并初始化 |
git clone <仓库地址> |
克隆远程仓库到本地 |
git clone --depth 1 <仓库地址> |
浅克隆(只拉最近一次提交,速度快) |
git branch -M main |
将当前分支重命名为 main |
git remote add origin <仓库地址> |
添加远程仓库 |
git remote -v |
查看远程仓库地址 |
git remote remove origin |
删除远程仓库关联 |
git remote set-url origin <新地址> |
修改远程仓库地址 |
2.1 首次推送
bash
# 初始化后首次推送
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:用户名/仓库名.git
git push -u origin main
三、日常开发流程
3.1 标准工作流(每天必用)
bash
# 1. 开始工作前,拉取最新代码
git pull
# 2. 查看当前状态
git status
# 3. 查看具体修改内容
git diff # 查看未暂存的修改
git diff --staged # 查看已暂存的修改
# 4. 添加文件到暂存区
git add 文件名 # 添加单个文件
git add . # 添加所有修改
git add -A # 添加所有(包括删除)
# 5. 提交到本地仓库
git commit -m "feat: 添加新功能"
git commit -m "fix: 修复bug" --amend # 修改上一次提交
# 6. 推送到远程
git push
3.2 提交信息规范(推荐)
| 前缀 | 说明 | 示例 |
|---|---|---|
feat: |
新功能 | feat: 添加用户登录 |
fix: |
Bug 修复 | fix: 修复登录超时问题 |
docs: |
文档更新 | docs: 更新 README |
style: |
代码格式 | style: 统一缩进 |
refactor: |
重构 | refactor: 优化代码结构 |
test: |
测试 | test: 添加单元测试 |
chore: |
构建/工具 | chore: 更新依赖 |
四、分支管理
4.1 基本分支操作
| 命令 | 说明 |
|---|---|
git branch |
查看本地分支 |
git branch -r |
查看远程分支 |
git branch -a |
查看所有分支(本地+远程) |
git branch <分支名> |
创建新分支 |
git checkout <分支名> |
切换分支 |
git checkout -b <分支名> |
创建并切换分支 |
git branch -d <分支名> |
删除分支(已合并) |
git branch -D <分支名> |
强制删除分支(未合并) |
git push origin --delete <分支名> |
删除远程分支 |
4.2 合并分支
bash
# 切换到目标分支(如 main)
git checkout main
# 合并其他分支
git merge feature/login
# 推送到远程
git push
五、撤销与恢复
5.1 工作区撤销(未暂存)
| 命令 | 说明 |
|---|---|
git restore <文件> |
丢弃工作区的修改(恢复到最后一次提交的状态) |
git checkout -- <文件> |
同上(老语法) |
git restore . |
丢弃所有工作区修改(⚠️ 不可恢复) |
5.2 暂存区撤销(已 add,未 commit)
| 命令 | 说明 |
|---|---|
git restore --staged <文件> |
将文件从暂存区移出(保留工作区修改) |
git reset HEAD <文件> |
同上(老语法) |
git restore --staged . |
移出所有暂存文件 |
5.3 提交撤销(已 commit,未 push)
| 命令 | 说明 |
|---|---|
git commit --amend |
修改最后一次提交(信息或内容) |
git reset --soft HEAD~1 |
撤销提交,保留修改在暂存区 |
git reset --mixed HEAD~1 |
撤销提交,保留修改在工作区(默认) |
git reset --hard HEAD~1 |
撤销提交,丢弃所有修改(⚠️ 谨慎) |
5.4 已推送的撤销
bash
# 方法1:撤销后强制推送(⚠️ 影响协作者)
git reset --hard HEAD~1
git push --force-with-lease
# 方法2:使用 revert(安全,保留历史)
git revert HEAD
git push
六、查看历史与状态
| 命令 | 说明 |
|---|---|
git status |
查看当前状态(最常用) |
git log |
查看完整提交历史 |
git log --oneline |
一行显示一条提交 |
git log --oneline -5 |
查看最近5条 |
git log --oneline --graph |
图形化显示分支历史 |
git log --oneline --all |
查看所有分支历史 |
git log --oneline --all -- <文件> |
查看指定文件的所有提交 |
git ls-files |
查看 Git 跟踪的文件列表 |
git diff |
查看未暂存的修改 |
git diff --staged |
查看已暂存的修改 |
git diff <分支1> <分支2> |
比较两个分支的差异 |
七、远程仓库同步
| 命令 | 说明 |
|---|---|
git pull |
拉取远程更新并合并(默认) |
git pull --rebase |
拉取并变基(历史更干净) |
git fetch |
只拉取,不合并 |
git push |
推送到远程 |
git push -u origin main |
首次推送并建立上下游关联 |
git push --force-with-lease |
安全强制推送(比 --force 更安全) |
git remote update |
更新所有远程引用 |
八、冲突处理
8.1 冲突发生时
bash
# 1. 查看冲突文件
git status
# 2. 手动编辑冲突文件,保留需要的内容
# 冲突标记格式:
# <<<<<<< HEAD
# 你的修改
# =======
# 远程的修改
# >>>>>>> branch-name
# 3. 标记已解决
git add <冲突文件>
# 4. 完成合并
git commit -m "merge: 解决冲突"
# 或者放弃合并(重新来)
git merge --abort
8.2 冲突解决快捷键(VS Code)
| 操作 | 说明 |
|---|---|
Accept Current Change |
保留本地版本 |
Accept Incoming Change |
保留远程版本 |
Accept Both Changes |
两者都保留 |
Compare Changes |
对比差异 |
九、删除文件与清理
9.1 删除文件(不同场景)
| 命令 | 本地文件 | Git 仓库 | 远程仓库 | 适用场景 |
|---|---|---|---|---|
rm <文件> |
❌ 删除 | ✅ 保留 | ✅ 保留 | 只删本地,不提交 |
git rm <文件> |
❌ 删除 | ❌ 删除 | ❌ 删除(推送后) | 彻底删除 |
git rm --cached <文件> |
✅ 保留 | ❌ 删除 | ❌ 删除(推送后) | 删除远程,保留本地 |
9.2 清理历史中的敏感文件
bash
# 方法1:删除重建(简单项目推荐)
rm -rf .git
git init
git add .
git commit -m "first commit"
# 删除远程仓库后新建,再推送
# 方法2:使用 filter-repo(彻底重写历史)
pip install git-filter-repo
git filter-repo --path <文件> --invert-paths --force
git push origin --force --all
十、.gitignore 配置
10.1 常用忽略规则
gitignore
bash
# 依赖
node_modules/
.pnpm-store/
# 构建产物
dist/
build/
.out/
.next/
# 环境变量
.env
.env.local
.env.production
# IDE
.vscode/
.idea/
*.swp
# 系统文件
.DS_Store
Thumbs.db
# 日志
*.log
npm-debug.log*
# 敏感文件(自定义)
mumu/
*.key
*.pem
10.2 忽略规则优先级
gitignore
bash
# 1. 忽略所有 .log 文件
*.log
# 2. 但不忽略 important.log(取反)
!important.log
# 3. 只忽略根目录下的 dist
/dist/
# 4. 忽略所有层级的 dist
dist/
十一、常见错误与解决方案速查
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
fatal: unable to access ... |
HTTPS 连接问题 | 改用 SSH 或配置代理 |
Updates were rejected |
本地落后于远程 | git pull 后再 push |
CONFLICT (modify/delete) |
文件状态冲突 | git merge --abort 后重新处理 |
The current branch has no upstream branch |
首次推送未设上游 | git push -u origin main 或配置 push.autoSetupRemote |
refusing to merge unrelated histories |
本地与远程无共同祖先 | git pull --allow-unrelated-histories |
pathspec did not match any file |
文件不存在于 Git 中 | 确认文件名或先 git add |
Your branch and 'origin/main' have diverged |
本地与远程分叉 | git pull --rebase 或合并后推送 |
十二、快捷键与别名
12.1 常用 Git 别名(推荐配置)
bash
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
# 使用
git st # 代替 git status
git lg # 查看图形化历史
git unstage 文件 # 从暂存区移出
12.2 VS Code Git 快捷键
| 操作 | 快捷键 |
|---|---|
| 打开源代码管理 | Ctrl + Shift + G |
| 提交暂存的更改 | Ctrl + Enter |
| 打开终端 | ```Ctrl + ````` |
| 打开命令面板 | Ctrl + Shift + P(输入 Git: 查看所有命令) |
总结:本次实战核心命令回顾
| 阶段 | 核心命令 |
|---|---|
| 配置 | git config --global user.name/email,ssh-keygen,ssh -T git@github.com |
| 初始化 | git init,git remote add,git push -u origin main |
| 日常 | git status,git add .,git commit -m,git push |
| 分支 | git checkout -b,git merge,git branch -d |
| 撤销 | git restore,git reset,git commit --amend |
| 冲突 | git status,git merge --abort,手动解决后 git add |
| 查看 | git log --oneline --all,git diff,git ls-files |
| 清理 | git rm --cached,添加 .gitignore,必要时删除重建 |