git branch 创建的分支本地看不到是因为它仅创建指针而不切换,需用 git switch -c 或 git checkout -b 切换;默认不显示远程分支,需加 -a 查看。

git branch 创建的分支为什么本地看不到?
因为 git branch 默认只列出本地分支,且**不自动切换**——它只是创建一个指向当前提交的指针,不会改变工作区状态。你执行了 git branch feature/login,分支确实建好了,但 git status 仍显示你在 main(或 master)上。
- 想立刻切过去,得加
-c(Git 2.23+)或用git checkout -b/git switch -c -
git branch不带参数时只显示本地分支;要看到远程跟踪分支,得加-a - 新建分支后如果没提交过新内容,它和原分支完全共享历史,
git log看不出区别
git checkout -b 和 git switch -c 哪个该用?
优先用 git switch -c。Git 2.23 引入 git switch 和 git restore 就是为了拆分 git checkout 的歧义功能——它既切分支又恢复文件,容易误操作。
-
git switch -c feature/login:明确表示“新建并切换”,语义干净 -
git checkout -b feature/login:兼容老版本 Git( -
git switch不支持路径操作(比如恢复某个文件),那是git restore的事,别混用
push 新分支时提示 “upstream not set” 怎么办?
分支创建完是“游离”的,Git 不知道该推到哪个远程仓库的哪个名字下。直接 git push 会失败,必须显式指定远程和分支名,或设置上游跟踪。
- 最简方式:
git push -u origin feature/login——-u一次性绑定上游,之后git push和git pull就能直接用了 - 如果忘了
-u,后续可用git branch --set-upstream-to=origin/feature/login - 注意远程名不一定是
origin,用git remote确认;分支名也不一定和本地一致,比如推成git push origin feature/login:feat-login
分支名里能用斜杠吗?有什么影响?
能用,而且推荐用,比如 feature/login、fix/timeout-408。Git 把斜杠当层级分隔符,git branch --list "feature/*" 能批量筛选,git show-branch 也会按目录结构缩进显示。
- 但斜杠不是路径,
feature/login和bugfix/login是两个完全独立的分支,不存在父子关系 - 某些 CI/CD 工具(如 GitHub Actions)会把
feature/*分支自动匹配到特定 workflow,命名规范直接影响自动化行为 - 避免用点号开头(如
.temp)、空格、波浪号(~)、冒号(:)——这些在 Git 内部解析时可能冲突
git push --force-with-lease 的心理压力。


















