分支切换与分支管理
分支是指向提交的可移动引用,用来隔离不同工作线。本库用职责更单一的 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。