正确姿势是git branch:只显示本地分支,带*的为当前分支,输出纯净稳定,不依赖fetch,不受远程变更影响,避免-r或-a引入远程缓存干扰。
直接看本地分支,就用,别加别的参数——这是最干净、最不容易出错的方式。
为什么
不加参数才是“只看本地分支”的正确姿势
加了
就变成查远程分支,加了
会混入一堆
这种带前缀的条目,反而干扰判断。本地分支是真正能 checkout、commit、merge 的实体,
输出里带
的那个,就是你当前正在工作的分支。
输出中每行是一个本地分支名,当前分支前有
(比如
)
不显示任何远程信息,不依赖
是否执行过
不会因远程仓库改名或删分支而产生陈旧条目
如果输出为空,说明你还没创建过任何本地分支(极少见,通常克隆后就有
或
)
和
的关键区别在哪
看起来更“全”,但它本质是加了跟踪信息的本地分支视图,不是纯本地分支列表。它会显示每个本地分支是否关联了远程分支、滞后/超前多少提交,但代价是:一旦远程分支被删,
里对应项会标
——这容易让人误以为本地分支异常,其实只是跟踪关系断了。
Git
程序猿必备版本控制工具
下载
:只告诉你“有哪些本地分支”,纯粹、稳定、无副作用
:告诉你“哪些本地分支在跟踪谁、同步状态如何”,适合排查推送/拉取问题,但不适合快速确认本地分支集合
如果你刚删了远程分支,
仍会列出该分支并标
;而
完全不受影响
常见误操作:把
当成“本地分支清单”用
输出里混着两类东西:
(本地)和
(远程缓存),后者不是你能直接操作的分支,只是本地对远程状态的一份快照。新手常因此误删
,其实那是只读缓存,删了再
就恢复;但真要删本地分支,必须用
,不能对着
下手。
适合一次性核对“本地有没有某个远程分支的对应本地分支”
想确认某远程分支是否存在,应该用
,而不是靠
是否显示
可清理陈旧的
条目,但不影响
输出的本地分支列表
真正需要“只看本地分支”时,别犹豫,就敲
。复杂点在于:很多人混淆了“本地分支”和“本地对远程的缓存”,而 Git 偏偏把这两者都塞进同一个命令的不同选项里——盯住你真正要操作的对象,比记住所有选项更重要。
git branchgit branch-r-aremotes/origin/xxxgit branch*** maingit fetchmainmastergit branchgit branch -vvgit branch -vvgit branch -vv[origin/xxx: gone]git branchgit branch -vvgit branch -vvgonegit branchgit branch -agit branch -amainremotes/origin/mainremotes/origin/maingit fetchgit branch -d mainremotes/origin/maingit branch -agit ls-remote origin | grep refs/heads/maingit branch -aremotes/origin/maingit fetch --pruneremotes/origin/*git branchgit branch