本页目录
Git 操作手册
历史与查找
delta 是 git diff 的现代替代: 侧边栏, 行号, 语法高亮。配置: git config --global pager.diff delta && git config --global pager.log delta
# 提交历史
# 谁改的
# 二分查找引入 bug 的 commit
# → Git checkout 中间版本 → 测试 → git bisect good/bad → ... → 定位到第一个 bad commit
# 找回丢失的 commit
# → 找到被 reset/drop 的 commit hash → git checkout -b recovery <hash>
分支与合并
# merge: 保留分支历史, 产生 merge commit
# 适用: feature 分支合并到 main, 保留"这个功能是分开发"的信息
# rebase: 把当前分支的 commit 搬到目标分支后面, 线性历史
# 适用: 在发 PR 前把 feature 分支对齐 main, 保持线性历史
# rebase 冲突时:
# cherry-pick: 从其他分支摘取单个 commit
# 适用: 只想把某 bug fix 合入 release 分支, 不带其他改动
# 删除已合并的分支
| |
暂存与撤销
# 暂存当前修改 (切分支前)
# 撤销
# 撤销已经 push 的 commit (远程):
# vs reset: revert 适合公共分支 (不破坏别人的历史), reset 适合本地分支
远程
# 安全 force push: 只有当远程没被人改过时才推
# 比 --force 安全: 如果同事在你上次 fetch 后 push 了, 这个会拒绝, 避免覆盖
Submodule
Worktree
# 在同一 repo 的不同目录检出不同分支 (无需 clone 两份)
# → ../hotfix 目录是 hotfix-branch 的工作树, 不影响当前目录
# 适用: 在跑长时间的测试时, 同时在另一个分支修 bug
Tag