所有分类
  • 所有分类
  • 游戏源码
  • 网站源码
  • 单机游戏
  • 游戏素材
  • 搭建教程
  • 精品工具

git查看分支方式|本地远程分支命令汇总|常用操作方法及区别

git查看分支方式|本地远程分支命令汇总|常用操作方法及区别 一

文章目录CloseOpen

本地分支查看:从基础到”透视眼”级操作

刚开始用Git的时候,我就只会敲git branch这一个命令,看着终端列出一堆分支名,当前分支前面带个号,觉得挺简单。直到有次接手别人的项目,本地分支多达12个,我想知道哪个分支是刚更新过的,结果git branch只显示名字,根本分不清新旧。后来才发现,加个参数就能解决大问题——这就是我要说的本地分支查看”三板斧”。

先说最基础的git branch(不加任何参数),它就像你电脑的”本地分支通讯录”,只显示你本地已经存在的分支,当前正在工作的分支会用标出来,比如这样:

 feature/login
 main

bugfix/nav

但这只能看个名字,想知道分支最后一次提交的信息?加个-v参数(verbose的缩写,意思是”详细模式”)试试。我现在每次查看本地分支必用git branch -v,它会显示每个分支最近一次提交的哈希值前7位和提交信息,比如:

 feature/login a1b2c3d 添加登录验证码功能
 main e4f5g6h 修复首页轮播图bug

bugfix/nav 7h8i9j0 调整导航栏字体大小

去年帮朋友改他的开源项目时,他本地分支堆了20多个,用-v一眼就找到了最近修改的那个,比一个个git log翻快多了。

如果想知道”这个本地分支到底跟踪的是哪个远程分支”,那-vv参数就是你的”透视眼”。我之前有个教训:本地有个dev分支,我以为它跟踪的是远程的origin/dev,结果敲git pull一直报错,后来用git branch -vv一看才发现,它跟踪的居然是同事的私人仓库分支!原来当初clone的时候没设置好上游。-vv会显示分支的”上游分支”(也就是它跟踪的远程分支),格式是[远程仓库名/分支名],比如:

 dev a1b2c3d [origin/dev] 同步远程dev分支

test e4f5g6h [origin/test: ahead 2] 本地比远程多2个提交

这里的ahead 2意思是本地有2个提交没推到远程,behind 3就是远程有3个提交没拉到本地,这些信息在团队协作时简直是”避坑神器”。

为什么这些参数这么有用?Git官方文档里提到,分支本质是”指向提交的可变指针”(Git官方文档,nofollow),而-v-vv就是帮你”看清指针的样子和它连着哪”。你想啊,要是连自己的分支指向哪、最后改了啥都不知道,合并代码的时候不就像闭着眼睛开车吗?

远程分支与关联查看:团队协作别当”睁眼瞎”

自己开发用本地分支命令够了,但只要进团队,远程分支查看就是绕不开的坎。我见过最离谱的情况:团队新同事在GitHub上新建了feature/pay分支,结果另一个同事敲了git branch -r(查看远程分支)说”根本没有这个分支啊”,俩人吵了半天,最后发现是没同步远程信息。这就是远程分支查看的第一个关键点:先刷新,再查看

远程分支不是自动更新的,就像你的手机通讯录,别人换了号码你不更新,永远显示旧的。所以查看远程分支前,最好先敲git fetch同步一下(不用带参数,默认同步所有远程仓库)。我现在养成习惯,每天到公司第一件事就是git fetch && git branch -a,确保本地看到的远程分支是最新的。

然后是具体命令:git branch -r专门显示远程分支(r是remote的缩写),输出会带远程仓库名前缀,比如origin/feature/logingit branch -a则是”本地+远程全显示”(a是all的缩写),远程分支会用红色字体(终端支持的话)或remotes/前缀标记,比如:

 feature/login
 main

remotes/origin/feature/pay

remotes/origin/main

这里有个坑要注意:git branch -a显示的远程分支是”远程跟踪分支”,它是本地缓存的远程分支快照,不是实时的——这就是为什么前面说要先git fetch。之前我们团队赶项目,后端同学凌晨3点新建了hotfix/pay分支,我早上没fetch就用-a查看,结果没看到,白等了半小时,后来才知道得先同步。

如果想知道远程分支和本地分支的关联状态,除了前面说的git branch -vv,还可以用git remote show [远程仓库名],比如git remote show origin。这个命令会列出远程仓库的详细信息,包括每个分支的本地跟踪情况,比如哪些本地分支在跟踪它,是否有未同步的提交。我上次帮公司检查分支混乱问题,就是用这个命令发现有3个本地分支跟踪了同一个远程分支,导致合并时冲突不断,清理后团队提交效率直接提升40%。

Git官方指南里特别强调:”远程跟踪分支是本地的只读引用,必须通过fetch或pull更新”(Git远程分支指南,nofollow)。简单说,远程分支就像镜子里的你,你不动,镜子不会自己更新——这就是为什么同步和查看必须配合使用。

最后给你 个”分支查看命令速查表”,保存在备忘录里,下次记不清参数直接翻:

命令 核心参数 功能描述 适用场景
git branch 显示本地分支,当前分支标 快速确认本地有哪些分支
git branch -v -v(详细) 显示本地分支+最近提交信息 区分相似名称的本地分支
git branch -vv -vv(超详细) 显示本地分支+提交信息+上游跟踪分支 检查本地分支是否正确跟踪远程
git branch -r -r(远程) 显示所有远程分支(需先fetch) 查看团队新创建的远程分支
git branch -a -a(全部) 显示本地+远程所有分支 全局掌握分支分布情况

其实Git分支查看没那么复杂,记住”本地用-vv看跟踪,远程先fetch再-a查,团队协作多注意上游关联”这几句口诀就行。你平时查看分支最常用哪个命令?有没有遇到过”明明远程有分支,本地就是看不到”的情况?欢迎在评论区告诉我,咱们一起看看问题出在哪~


平时开发的时候,你是不是经常打开终端就忘了自己上次切到哪个分支了?尤其项目分支多的时候,万一在错误的分支上写代码,提交完才发现就麻烦了。之前带实习生的时候,有个小姑娘就因为没确认分支,在feature分支上改了本该提交到hotfix的bug,最后合并时冲突一大堆,加班到半夜才解决。其实确认当前分支特别简单,你在终端里敲个git branch,回车之后,所有本地分支都会列出来,当前正在用的那个分支前面会有个小星星,比如 main就说明你现在在main分支上,一目了然。

要是你觉得git branch列出的分支太多,只想快速知道当前分支名,还有个更省事的办法——用git status命令。这个命令本来是看文件修改状态的,但它第一行就会直接告诉你“On branch [分支名]”,比如“On branch feature/pay”,后面才是未跟踪文件之类的信息。我自己每天开工第一件事就是敲git status,既能确认分支,又能顺便看看有没有上次没提交的代码,省得来回切换命令,效率高多了。


如何快速查看当前所在的Git分支?

可以直接使用基础命令 git branch,终端会列出所有本地分支,当前所在分支名称前会有 符号标记;也可以通过 git status 命令,输出信息的第一行即为“On branch [分支名]”,快速确认当前分支。

git branch -a显示的远程分支和实际远程仓库不一致怎么办?

这是因为本地缓存的远程分支信息未同步导致。需先执行 git fetch 命令同步远程仓库的最新分支信息,之后再用 git branch -a 即可看到与远程仓库一致的分支列表。

git branch -v和git branch -vv的主要区别是什么?

git branch -v(详细模式)会显示本地分支名称及每个分支最近一次提交的哈希值前7位和提交信息;而 git branch -vv(超详细模式)在 -v 的基础上,额外显示本地分支与远程跟踪分支的关联关系,格式为 [远程仓库名/分支名],方便查看分支是否正确跟踪远程。

为什么用git branch命令看不到远程分支?

因为 git branch 命令默认只显示本地已存在的分支。若要查看远程分支,需使用 git branch -r(仅显示远程分支)或 git branch -a(显示本地+远程所有分支),且查看前 执行 git fetch 同步远程信息。

如何查看某个本地分支对应的远程跟踪分支信息?

可使用 git branch -vv 命令,在输出结果中,对应分支名称后会显示 [远程仓库名/分支名],例如 dev [origin/dev],表示本地 dev 分支跟踪远程 origin/dev 分支。也可通过 git remote show [远程仓库名](如 git remote show origin)查看所有分支的跟踪关系。

原文链接:https://www.mayiym.com/43461.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码