git branch 命令列出本地所有分支,当前分支前带 * 号;仅显示当前分支名用 git branch --show-current;查远程分支用 git branch -r,查所有分支用 git branch -a。

git branch 命令怎么看当前分支
执行 git branch 会列出本地所有分支,当前所在分支前面带一个 * 号。这是最直接的识别方式,不需要额外参数。
常见误区是以为没输出就代表没分支——其实一定是有的,只是可能你刚初始化仓库还没提交,git branch 默认不显示未提交过任何内容的初始分支(比如 main 或 master 还没真正创建)。此时用 git status 更可靠,它第一行就会写明 On branch main 或类似提示。
git checkout 和 git switch 切换分支的区别
git checkout 是老命令,功能多但语义模糊(既能切分支又能丢弃修改);git switch 是 Git 2.23+ 引入的专用分支切换命令,更安全、意图更明确。
实际操作建议:
- 切已有分支:
git switch <branch-name></branch-name>(推荐)或git checkout <branch-name></branch-name> - 新建并切换:
git switch -c <new-branch></new-branch>(比git checkout -b更直观) - 切回上一个分支:
git switch -(等价于旧版git checkout -)
注意:git switch 不能用来恢复文件修改,这点和 checkout 不同,避免误操作丢代码。
切换失败的典型错误和应对
最常见的报错是 error: Your local changes to the following files would be overwritten by checkout,说明当前有未提交的修改,Git 拒绝切换以防冲突覆盖。
|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件
这时有三个选择:
- 先提交:
git add . && git commit -m "temp" - 暂存修改:
git stash,切完再git stash pop - 强制丢弃(谨慎):
git checkout <target-branch> --force</target-branch>或git switch --force <target-branch></target-branch>,会直接清除工作区改动
别忽略状态检查:切分支前运行 git status 看一眼,能省掉大半麻烦。
为什么 git branch 显示不出远程分支
git branch 默认只列本地分支。远程分支(如 origin/main)需要加 -r 参数:git branch -r。但注意,这只会显示你本地“记住”的远程分支列表,不是实时远端状态。
想同步最新远程分支信息,得先 git fetch;否则 git branch -r 可能漏掉别人新推的分支,也看不到已删除的分支。如果要基于远程分支新建本地分支,用 git switch --track origin/feature/login,比手动 git checkout -b + git branch --set-upstream-to 更简洁。
分支名大小写、空格、斜杠这些字符在不同系统上表现不一,尽量用小写字母加短横线(如 fix-user-auth),避免后续在 CI 或脚本里出问题。

















