分支与合并 Pro Git · 第 3 章 / 7.5

命令说明
git branch -vv列出本地分支及各自跟踪的远程分支
git switch -c <新分支>创建并切换(git switch - 回上一个分支)
git branch -m <新名字>重命名当前分支
git branch -d <分支>删除已合并的分支(-D 强制删除)
git merge --no-ff <分支>合并并保留合并节点(团队常用于功能分支)
git merge --squash <分支>把分支改动压成一次提交再合并,历史更干净
git rebase <基准分支>变基:把当前分支提交移到基准之上,历史线性
git rebase -i HEAD~5交互式变基:最近 5 条提交可改写 / 合并 / 调序
git cherry-pick <提交>把单个提交"拣选"到当前分支(-x 记录来源)
git switch --detach <提交>检出到某次提交查看(分离 HEAD,只看不改)
git rebase --autostash <分支>变基前自动 stash 未提交改动,完成后恢复
git switch --orphan gh-pages创建不含历史的新分支(部署静态页常用)
git branch -a列出含远程分支在内的所有分支
git branch --contains <提交>查某个提交落在哪些分支上
git branch --merged main列出已合并进 main、可安全删除的分支(--no-merged 反之)
git merge --ff-only <分支>只接受快进合并,否则拒绝——保证主分支线性
git rebase --onto <新基准> <旧基准>把一段提交从旧基点整体搬到新基点(摘移提交串)
原则:不要对已推送到公共分支的提交做 rebase,否则他人在旧历史上开发会产生大量冲突。
bash · 功能分支流程
# 开新功能 → 合并回 main → 删分支
git switch -c feat/login
# ……开发并提交若干次……
git switch main
git merge --no-ff feat/login
git branch -d feat/login