Git 命令很多,但日常真正用到的就那么几十个,整理一下。
基础配置
刚装好先配置用户信息:
git config --global user.name "waawo"
git config --global user.email "your@email.com"
# 默认分支名改为 main
git config --global init.defaultBranch main
# 中文文件名不转义
git config --global core.quotepath false
日常操作
# 查看状态
git status
git status -s # 简短格式
# 暂存
git add . # 暂存所有
git add src/ # 暂存指定目录
git add -p # 交互式选择要暂存的内容(很好用)
# 提交
git commit -m "feat: add user login"
git commit --amend # 修改最后一次提交
# 查看历史
git log --oneline
git log --oneline --graph # 图形化分支视图
git log -p filename # 查看某个文件的改动历史
分支操作
# 新建并切换
git switch -c feature/login
# 切换已有分支
git switch main
# 删除分支
git branch -d feature/login # 已合并才能删
git branch -D feature/login # 强制删除
# 查看所有分支
git branch -a
远程操作
# 拉取
git pull # fetch + merge
git pull --rebase # fetch + rebase(历史更干净)
# 推送
git push origin main
git push -u origin feature/login # 首次推送并设置上游
# 查看远程
git remote -v
撤销和回滚
这块最容易混淆,记清楚:
# 撤销工作区的改动(未暂存)
git restore filename
# 撤销暂存(把文件从暂存区移回工作区)
git restore --staged filename
# 回退到某个提交(保留改动在工作区)
git reset HEAD~1
# 回退到某个提交(丢弃所有改动,慎用)
git reset --hard HEAD~1
# 用新提交来撤销某次提交(推荐用于已推送的提交)
git revert <commit-hash>
Stash
临时保存改动,切换分支处理其他事情时用:
git stash # 保存
git stash pop # 恢复并删除
git stash list # 查看所有 stash
git stash drop # 删除最新的 stash
一些实用技巧
# 查看两个分支的差异
git diff main feature/login
# 找出是哪次提交引入了 bug
git bisect start
git bisect bad # 标记当前版本有问题
git bisect good v1.0 # 标记某个版本没问题
# git 会自动二分查找
# 只把某个提交应用到当前分支
git cherry-pick <commit-hash>
# 查看某行代码是谁写的
git blame filename
.gitconfig 里配几个常用别名也能省不少时间:
[alias]
st = status
co = switch
lg = log --oneline --graph --all