git checkout -b 不能直接创建新分支,必须加 -b 参数;等价于 git branch + git checkout;推荐用更安全的 git switch -c 替代。

直接切出新分支前,必须确认当前工作区干净、且已同步主干最新代码——否则新分支会继承脏状态或旧提交,后续合并不稳定。
git checkout -b 之前先确保在正确的主干分支上
很多人执行 git checkout -b feature/login 后发现代码不是预期的最新版,问题往往出在「当前不在真正的主干分支」。比如:
- 克隆后没
git checkout main,而默认进的是master(旧仓库)或某个已过期的本地分支 - 远程主干已更新(如
main新增了 3 个 commit),但本地没git pull,仍停留在旧 HEAD
正确做法是:
- 运行
git branch -r确认远程主干名(常见为origin/main或origin/master) - 用
git checkout main(或对应名)切换过去 - 立刻执行
git pull origin main拉取最新 - 再
git status确保输出为nothing to commit, working tree clean
git checkout -b 和 git switch -c 的区别与选型
git checkout -b 是传统写法,但自 Git 2.23 起推荐用 git switch -c,语义更清晰、行为更安全:
-
git checkout -b feature/x:若本地已有同名分支,会报错;但若误输成git checkout -b feature/x some-file,可能意外检出文件而非建分支 -
git switch -c feature/x:只做分支创建+切换,不支持文件操作,参数错误时直接报错,不易误用 - 两者都基于当前 HEAD 创建新分支,即新分支起点 = 当前所在分支的最新 commit
建议新项目统一用 git switch -c,老项目维持 git checkout -b 也可,但别混用。
新建分支后立即关联远程并推送空分支
刚切出的本地分支默认不关联远程,git push 会失败或需带完整参数。提前关联能避免后续漏掉 --set-upstream:
- 执行
git switch -c feature/auth后,立刻运行:git push -u origin feature/auth -
-u即--set-upstream,让本地分支跟踪origin/feature/auth - 即使分支尚无提交,该命令也会在远程创建空分支(Git ≥ 2.20 支持)
- 这样后续只需
git push和git pull,无需重复指定远端和分支名
最容易被忽略的一点:切分支不是“复制代码”,而是移动 HEAD 指针。如果切之前有未提交修改,这些修改会原样带到新分支——这看似方便,实则埋下隐患。务必养成 git status + git add && git commit 或 git stash 再切分支的习惯。


















