# ===== CodeLab: Git rebase 与 merge 怎么选 =====
# 来源: https://aoerliang.dpdns.org/articles/git-rebase
# 以下代码片段按文章出现顺序拼接, 共 4 段

# ----- 片段 1 (bash) -----
# merge:保留分叉,生成合并提交
git checkout feature
git merge main

# rebase:把 feature 的提交重放到 main 之后
git checkout feature
git rebase main

# ----- 片段 2 (bash) -----
git checkout main
git merge --no-ff feature/login   # 强制生成合并提交,历史清晰

# ----- 片段 3 (bash) -----
# 同步 main 的最新改动
git fetch origin
git rebase origin/main

# 交互式整理最近 3 个提交
git rebase -i HEAD~3
# 编辑器里把 pick 改成 squash 即可合并提交

# ----- 片段 4 (bash) -----
# 把 "fix typo"、"add tests" 合并进主提交
git rebase -i HEAD~4
# 编辑器里从上到下依次是:
# pick  a1b2c3d feat: 实现登录
# fixup e4f5a6b fix typo
# fixup c7d8e9f add tests
