以下是 10 个 Git 高效操作技巧,涵盖日常开发高频场景(附极简示例):
# 撤销暂存区文件(保留修改)
git reset HEAD <file>
# 撤销工作区修改(丢弃修改)
git checkout -- <file>
# 回退到某次提交(保留历史)
git revert <commit-sha> # 推荐,生成新提交撤销旧操作
# 基于远程分支新建本地分支(免 checkout -b)
git switch -c new-branch origin/main
# 快速删除已合并分支
git branch -d <branch> # 安全删除
git branch -D <branch> # 强制删除未合并分支
# 查看所有分支的最后一次提交
git branch -v
# 追加修改到最后一次提交(无需新开提交)
git commit --amend -m "新提交信息" # 改信息/补文件都适用
# 拆分提交(后悔合并了多个修改)
git add -p # 交互式暂存,逐行选择修改
git commit -m "细分提交 1"
# 查看文件历史变更(含删除记录)
git log -p <file>
# 搜索历史中的关键字
git log --grep="fix bug" # 提交信息搜索
git log -S"old_value" # 代码内容变更搜索
# 图形化历史(需先安装 tig)
tig log # 空格键翻页,q 退出
# 临时保存未提交修改(无需 commit)
git stash save "临时修改说明"
git stash pop # 恢复并删除 stash
# 对比 stash 与当前代码
git diff stash@{0}
# 强制拉取远程最新代码(覆盖本地)
git fetch --all && git reset --hard origin/main
# 查看远程分支差异
git branch -r --no-merged # 显示未合并的远程分支
# 取消本地追踪远程分支
git branch --unset-upstream
# 配置个性化别名(~/.gitconfig)
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
co = checkout
br = branch
last = log -1 HEAD
配置后直接使用 git lg
查看图形化历史,git last
查看最后一次提交。
# 对比工作区与暂存区
git diff
# 对比暂存区与上次提交
git diff --cached
# 对比两个分支
git diff branchA..branchB # 不包含 branchA 的提交
git diff branchA...branchB # 包含两个分支共同祖先之后的差异
# 初始化子模块(克隆后首次使用)
git submodule update --init --recursive
# 拉取子模块最新代码
git submodule foreach git pull origin main
# 恢复误删的提交(未 GC 时)
git reflog # 查看所有操作记录
git checkout <commit-sha> # 恢复指定提交
记忆口诀:
改暂存用 reset
,改工作区用 checkout
;
追提交用 amend
,删分支先看 --merged
;
查历史用 lg
,存临时用 stash
;
远程冲突先 fetch
,子模块必加 --recursive
。
这些技巧覆盖了 80% 的日常 Git 操作,建议结合 git help <command>
深入理解每个命令的工作原理~