Git 是开发者日常使用最频繁的工具之一。虽然基本命令大家都会用,但很多实用技巧和高级功能可能并不为人熟知。这篇文章整理了我在日常开发中常用的 Git 命令和技巧,部分内容来自踩坑经验,希望能帮你提高效率、少走弯路。
基础操作速查
初始化与配置
# 初始化仓库
git init
# 克隆仓库
git clone <url>
# 查看/设置用户信息
git config user.name "你的名字"
git config user.email "your@email.com"
日常提交流程
# 查看状态
git status
# 添加文件到暂存区
git add <file> # 单个文件
git add . # 所有更改
git add -p # 交互式选择部分修改
# 提交
git commit -m "描述信息"
git commit --amend # 修改上一次提交
分支管理技巧
常用分支操作
# 创建并切换分支
git checkout -b feature/new-feature
# 或者使用新语法
git switch -c feature/new-feature
# 查看分支
git branch # 本地分支
git branch -a # 所有分支
# 合并分支
git merge feature/new-feature
# 删除分支
git branch -d feature/old-feature
Feature Branch 工作流
这是我日常开发中最常用的分支策略:
- 从 main 分支创建功能分支
- 在功能分支上开发和提交
- 定期 rebase main 保持同步
- 完成后合并回 main
# 1. 创建功能分支
git checkout -b feature/user-login
# 2. 开发过程中...
git add . && git commit -m "feat: add login form"
# 3. 同步 main 的最新改动
git fetch origin
git rebase origin/main
# 4. 推送并创建 PR
git push -u origin feature/user-login
撤销与修改
这部分是最容易出错的地方,也是踩坑最多的地方。理解每个命令的区别非常重要。
未提交的修改
# 丢弃工作区的修改
git checkout -- <file>
# 或新语法
git restore <file>
# 丢弃所有未提交的修改
git checkout .
已暂存但未提交
# 从暂存区移除(保留文件修改)
git reset HEAD <file>
# 或新语法
git restore --staged <file>
已提交的修改
# 软重置:保留修改,回退提交记录
git reset --soft HEAD~1
# 混合重置(默认):保留文件修改,回退提交和暂存
git reset --mixed HEAD~1
# 硬重置:完全回退,丢弃所有修改(危险!)
git reset --hard HEAD~1
警告:
git reset --hard会永久丢失你的修改。在执行之前,请确保你真的不需要这些改动。
日志查看技巧
# 基本日志
git log
# 单行显示
git log --oneline
# 图形化分支历史
git log --graph --oneline --all
# 查看某个文件的修改历史
git log -p <file>
# 查找引入某个 bug 的提交
git bisect start
git bisect bad
git bisect good v1.0
实用小技巧
Stash:临时保存工作进度
当你正在开发某个功能,突然需要切换到其他分支处理紧急问题时:
# 保存当前修改
git stash save "WIP: user login feature"
# 切换到其他分支处理问题
git checkout main
# ... 修复问题 ...
# 回到原分支,恢复修改
git checkout feature/user-login
git stash pop
.gitignore:忽略不需要跟踪的文件
# 在项目根目录创建 .gitignore
node_modules/
dist/
.env
*.log
.DS_Store
别名:简化常用命令
# 设置别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.st status
# 使用
git st # git status
git cm "fix bug" # git commit -m "fix bug"
常见踩坑经验
- 合并冲突:遇到冲突不要慌,打开文件解决标记处的冲突,然后 add + commit
- 大文件提交:不要把 node_modules、dist 等构建产物提交到仓库
- 敏感信息泄露:如果不小心提交了密码或密钥,使用
git filter-branch从历史中彻底清除 - 频繁小提交:在推送前可以用
git rebase -i整理提交历史,合并琐碎的提交
总结
Git 是一个功能强大的工具,掌握它的常用技巧可以显著提升开发效率。建议从基础命令开始,逐步学习高级功能。最重要的是多实践,在实际使用中加深理解。
如果你对这些命令还不够熟悉,可以把这篇文章当作速查手册,需要时随时翻阅。随着使用频率的增加,这些命令会逐渐变成肌肉记忆。