.# 常见 Git 操作速查手册(从入门到实战)
本文整理了日常开发中最常用的 Git 命令,涵盖仓库管理、分支操作、远程同步、撤销回滚、差异对比等核心场景,适合收藏随时查阅。
一、基础配置
安装 Git 后,第一步是配置用户信息,每次提交都会带上这些信息:
# 配置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
# 查看配置
git config --list
# 配置默认分支名为 main(新版 Git 默认已是 main)
git config --global init.defaultBranch main
# 配置别名,提升效率
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all"
二、仓库初始化与克隆
# 在当前目录初始化一个新的 Git 仓库
git init
# 克隆远程仓库到本地
git clone https://github.com/username/repo.git
# 克隆并指定本地目录名
git clone https://github.com/username/repo.git my-project
三、文件状态与提交
3.1 查看状态
# 查看工作区和暂存区状态
git status
# 简洁版状态显示
git status -s
3.2 添加到暂存区
# 添加指定文件
git add filename.txt
# 添加所有修改和新增文件
git add .
# 添加所有修改和删除(不含未跟踪的新文件)
git add -u
# 交互式添加
git add -i
3.3 提交
# 提交暂存区内容,打开编辑器写提交信息
git commit
# 直接写提交信息
git commit -m "feat: 添加用户登录功能"
# 跳过暂存区,直接提交所有已跟踪文件的修改
git commit -am "fix: 修复登录超时问题"
# 修改上一次提交(未推送到远程时使用)
git commit --amend -m "新的提交信息"
# 修改上一次提交但保留原提交信息
git commit --amend --no-edit
3.4 查看提交历史
# 查看完整提交历史
git log
# 单行简洁显示
git log --oneline
# 图形化显示分支合并关系
git log --oneline --graph --all
# 查看最近 N 条提交
git log -5
# 查看指定文件的提交历史
git log -- filename.txt
# 查看提交的具体改动
git log -p
四、分支操作
分支是 Git 的灵魂,日常开发几乎离不开它。
4.1 查看分支
# 查看本地分支
git branch
# 查看所有分支(含远程)
git branch -a
# 查看分支及最新提交
git branch -v
# 查看已合并到当前分支的分支
git branch --merged
# 查看未合并到当前分支的分支
git branch --no-merged
4.2 创建与切换
# 创建新分支(不切换)
git branch feature/login
# 创建并切换到新分支(旧写法)
git checkout -b feature/login
# 创建并切换到新分支(Git 2.23+ 推荐写法)
git switch -c feature/login
# 切换到已有分支
git switch main
# 或
git checkout main
# 切换到上一个分支
git switch -
4.3 合并分支
# 切换到目标分支,然后合并
git switch main
git merge feature/login
# 合并时禁用 fast-forward,生成合并提交
git merge --no-ff feature/login
# 合并冲突后,手动解决冲突文件,然后
git add .
git commit -m "merge: 合并 feature/login 分支"
# 中止合并
git merge --abort
4.4 删除分支
# 删除已合并的本地分支
git branch -d feature/login
# 强制删除本地分支(未合并也删)
git branch -D feature/login
# 删除远程分支
git push origin --delete feature/login
4.5 变基(rebase)
# 将当前分支的提交变基到目标分支之上
git switch feature/login
git rebase main
# 交互式变基(可合并、修改、删除提交)
git rebase -i HEAD~3
# 变基冲突后,解决冲突然后
git add .
git rebase --continue
# 中止变基
git rebase --abort
注意:已经推送到远程共享分支的提交,不建议 rebase,会改写历史导致协作者混乱。
五、远程仓库操作
5.1 管理远程地址
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin https://github.com/username/repo.git
# 修改远程仓库地址
git remote set-url origin https://github.com/username/new-repo.git
# 删除远程仓库
git remote remove origin
5.2 推送与拉取
# 首次推送并建立跟踪关系
git push -u origin main
# 后续推送
git push
# 推送到指定分支
git push origin feature/login
# 强制推送(rebase 后使用,危险!)
git push --force
# 更安全的强制推送,只在远程分支没有新提交时才强制
git push --force-with-lease
# 拉取远程更新并合并(fetch + merge)
git pull
# 拉取并变基(fetch + rebase)
git pull --rebase
# 仅获取远程更新,不合并
git fetch origin
# 获取所有远程更新
git fetch --all
六、差异对比(diff)
# 查看工作区与暂存区的差异
git diff
# 查看暂存区与最新提交的差异
git diff --staged
# 或
git diff --cached
# 查看工作区与最新提交的差异
git diff HEAD
# 比较两个分支的差异
git diff main feature/login
# 比较两个提交的差异
git diff abc123 def456
# 查看指定文件的差异
git diff -- filename.txt
# 只看变更统计(增删行数)
git diff --stat
七、撤销与回滚
这是最容易搞混的部分,分场景说明。
7.1 撤销工作区修改(未 add)
# 丢弃指定文件的工作区修改
git checkout -- filename.txt
# 或(Git 2.23+ 推荐)
git restore filename.txt
# 丢弃所有工作区修改
git restore .
7.2 撤销暂存(已 add,未 commit)
# 将文件从暂存区撤回工作区(保留修改)
git reset HEAD filename.txt
# 或(Git 2.23+ 推荐)
git restore --staged filename.txt
# 撤销所有暂存
git reset HEAD
7.3 撤销提交(已 commit,未 push)
# 软回退:保留修改在暂存区
git reset --soft HEAD~1
# 混合回退(默认):保留修改在工作区
git reset --mixed HEAD~1
# 即
git reset HEAD~1
# 硬回退:彻底丢弃修改(危险!)
git reset --hard HEAD~1
# 回退到指定提交
git reset --hard abc123
7.4 撤销已推送的提交(已 push)
已推送到远程的提交不要用 reset,应该用 revert 生成一个反向提交:
# 撤销指定提交,生成新的反向提交
git revert abc123
# 撤销最近一次提交
git revert HEAD
# 撤销多个提交
git revert abc123 def456
# 推送到远程
git push
八、暂存工作进度(stash)
当你在一个分支上改了一半,需要临时切换到另一个分支时,用 stash 保存现场:
# 暂存当前工作进度
git stash
# 暂存并添加描述
git stash save "正在写登录接口"
# 暂存包含未跟踪的新文件
git stash -u
# 查看暂存列表
git stash list
# 恢复最近一次暂存(恢复后删除该 stash)
git stash pop
# 恢复指定暂存
git stash pop stash@{1}
# 恢复暂存但不删除(保留在列表中)
git stash apply
# 删除指定暂存
git stash drop stash@{0}
# 清空所有暂存
git stash clear
九、标签(tag)
常用于版本发布标记:
# 查看所有标签
git tag
# 创建轻量标签
git tag v1.0.0
# 创建带注释的标签(推荐)
git tag -a v1.0.0 -m "正式发布版本 1.0.0"
# 给指定提交打标签
git tag -a v1.0.0 abc123 -m "版本 1.0.0"
# 查看标签详情
git show v1.0.0
# 推送单个标签到远程
git push origin v1.0.0
# 推送所有标签
git push --tags
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签
git push origin --delete v1.0.0
十、实用技巧
10.1 查看某行代码是谁改的
git blame filename.txt
10.2 从其他分支复制某个提交
git cherry-pick abc123
10.3 清理未跟踪的文件
# 预览会删除哪些文件
git clean -n
# 删除未跟踪的文件
git clean -f
# 删除未跟踪的文件和目录
git clean -fd
10.4 忽略文件权限变更
git config core.fileMode false
10.5 保存账号密码(HTTPS 方式)
# 缓存凭据 1 小时
git config --global credential.helper "cache --timeout=3600"
# Windows 永久保存
git config --global credential.helper manager
十一、常见场景速查表
| 场景 | 命令 |
|---|---|
| 新建分支开发 | git switch -c feature/xxx |
| 提交代码 | git add . && git commit -m "msg" |
| 推送到远程 | git push -u origin feature/xxx |
| 拉取最新代码 | git pull --rebase |
| 合并到主分支 | git switch main && git merge feature/xxx |
| 改了一半要切分支 | git stash |
| 撤销未提交的修改 | git restore . |
| 撤销已提交未推送 | git reset --soft HEAD~1 |
| 撤销已推送的提交 | git revert HEAD && git push |
| 查看改了什么 | git diff |
| 查看提交历史 | git log --oneline --graph --all |
十二、提交信息规范
推荐使用 Conventional Commits 格式,便于自动化生成 CHANGELOG:
<type>(<scope>): <subject>
<body>
<footer>
type 类型:
feat:新功能fix:修复 bugdocs:文档变更style:代码格式(不影响功能)refactor:重构perf:性能优化test:测试相关chore:构建/工具相关
示例:
feat(auth): 添加短信验证码登录功能
- 集成阿里云短信服务
- 添加验证码校验接口
- 限制同一手机号 60 秒内只能发送一次
Closes #123
总结
以上就是日常开发中最常用的 Git 操作,建议重点掌握:
- 分支管理:创建、切换、合并、删除
- 远程同步:push、pull、fetch
- 撤销回滚:区分 reset 和 revert 的使用场景
- 差异对比:git diff 的各种用法
- 暂存进度:git stash 处理多任务切换
Git 命令很多,但日常高频使用的也就 20 个左右,用熟了就得心应手了。有问题欢迎评论区交流。
如果本文对你有帮助,欢迎点赞、收藏、关注三连支持!
453



被折叠的 条评论
为什么被折叠?



