分支与合并 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,否则他人在旧历史上开发会产生大量冲突。
# 开新功能 → 合并回 main → 删分支 git switch -c feat/login # ……开发并提交若干次…… git switch main git merge --no-ff feat/login git branch -d feat/login