Git 高级工作流

Choyeon· 2026年8月29日· 2 分钟阅读· 236 阅读· 494 字· 1,254 字符
Git 高级工作流

基础的 add/commit/push 只能满足日常协作,掌握进阶命令能精确控制版本历史、高效排查问题。

Interactive Rebase 整理历史

通过 reword/squash/fixup/drop 指令重写提交序列,合并 WIP 提交、修正信息、删除调试代码,保持主分支提交历史清晰可读。

#!/usr/bin/env bash
set -euo pipefail

# 1. Interactive Rebase: squash最近5条WIP,reword命名
git rebase -i HEAD~5 <<EOF
pick   a1b2c3d feat: add login API
reword b3e4f5g fix typo in user model
squash c6h7i8j wip: add test cases
fixup  d9k0l1m fix lint issues
drop   e2n3o4p tmp debug log
EOF

# 2. Cherry-pick: 跨分支移植hotfix
git checkout release/2.0
git cherry-pick -x a1b2c3d
# 多个提交合入暂存区手动合并后一次性提交:
# git cherry-pick --no-commit b3e4f5g c6h7i8j
# git cherry-pick --continue / --abort

# 3. Bisect: 二分找引入Bug的提交
git bisect start
git bisect bad HEAD
git bisect good v1.8.0
git bisect run pytest tests/test_auth.py -x
# Output: a1b2c3d is the first bad commit
git bisect reset

# 4. Reflog救援
git reflog --date=iso | head -20
# git reset --hard HEAD@{3}

# 5. 批量修复作者信息
git filter-branch -f --env-filter '
if [ "$GIT_AUTHOR_EMAIL" = "old@example.com" ]; then
    export GIT_AUTHOR_NAME="Correct Name" GIT_AUTHOR_EMAIL="new@example.com"
    export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
fi
' HEAD

Bisect 二分查 Bug

当回归 Bug 不知何时引入时,Bisect 通过二分搜索自动找出首个坏提交。配合自动化测试脚本可零人工介入,几分钟定位问题。

命令 作用 风险级别 推荐场景
rebase -i 重写历史 中(只改未推送分支) 提交整理/MR前
cherry-pick 移植提交 低(产生新hash) 回移hotfix
bisect 二分查Bug 极低(只读) 回归Bug定位
reflog 操作历史 零(只读) 误操作救援
filter-branch 批量改写 极高(改所有hash) 作者信息修复

最佳实践

黄金原则:永远不要 rebase 已经推送到公共分支的提交。危险操作前先打 git tag backup-$(date +%Y%m%d) 保险标签。

本文作者

评论 (0)

暂无评论,来抢沙发吧。