分支切换与分支管理

分支是指向提交的可移动引用,用来隔离不同工作线。本库用职责更单一的 git switch 讲分支切换,并保留 git checkout 兼容写法;自动化脚本仍应核对目标环境中的 Git 版本与项目约定。状态模型见 Git 状态模型与提交图。

git switch <name>

git switch feature/demo

用途:切换到已有分支。

旧写法:

git checkout feature/demo

适用场景:

  • 从当前分支切换到 main、develop 或某个功能分支。
  • 检查另一个分支的代码状态。

注意点:

  • 如果当前工作区有未提交修改,Git 可能拒绝切换,避免覆盖你的工作。
  • 切换前建议先运行 git status --short。

git switch -c <name>

git switch -c feature/demo

用途:基于当前提交创建新分支,并立即切换过去。

旧写法:

git checkout -b feature/demo

适用场景:

  • 开始一个新功能、修复或文档整理任务。
  • 想把实验性工作与主分支隔离。

示例:

git switch -c docs/git-cheat-sheet

建议:创建前用 git branch --show-current 确认实际基线分支名。git init 的默认分支可由版本、安装器或配置决定,克隆仓库的初始分支来自远程 HEAD,不能一律假设叫 main。

git branch

git branch

用途:列出本地分支,当前分支通常会带有标记。

常见扩展:

git branch -a
git branch -vv

说明:

  • -a 同时显示远程跟踪分支。
  • -vv 显示本地分支对应的 upstream 和领先/落后信息。

git branch --sort=-committerdate

git branch --sort=-committerdate

用途:按最近提交时间倒序列出分支。

适用场景:

  • 找最近活跃的功能分支。
  • 清理旧分支前先判断哪些分支长期没有更新。

git branch -d <name>

git branch -d feature/demo

用途:删除本地分支。Git 会检查该分支是否已经合入它的 upstream;若没有 upstream,才检查是否合入当前 HEAD。未满足保护条件时会拒绝。

适用场景:

  • 功能分支已经合并。
  • 本地临时分支不再需要。

注意:不能删除当前所在分支,需要先切到其他分支。

git branch -D <name>

git branch -D feature/demo

用途:强制删除本地分支,即使 Git 认为它还没被合并。

高风险操作

-D 会丢掉该分支上未合并的提交引用。执行前用 git log --oneline HEAD..feature/demo 查看只在待删分支上的提交,再用 git branch --contains feature/demo 检查哪些分支已经包含它的 tip;仍不确定就不要强删。

恢复思路:

  • 如果刚删错,可以尝试通过 git reflog 找回提交 ID,再重新创建分支。

下一步:把分支汇合

创建和切换只解决“隔离”,不解决“如何汇合”。继续 分支合并与冲突处理,学习 fast-forward、三方合并、冲突标记、git merge --continue 与 git merge --abort。