开发当中与远程分支有关的git操作

记录一下,工作中使用git的一些盲点,重新梳理出来,帮助准确操作远程的一些操作.....

附上学习链接[Git Book](Git - 远程分支 (git-scm.com))

远程分支在本地仓库是什么形式?

git在本地分支都是有指针引用进行标记分支最新的进展,而远程分支的进展就是通过远程引用,它是对远程仓库的引用(指针)。远程引用无法移动,但连网进行拉取之后,它们就会自动移动。

远程分支的形式:<remote>/<branch>

查看远程分支的两个命令: 1、git ls-remote <remote> 来显式地获得远程引用的完整列表 2、git remote show <remote> 获得远程分支的更多信息

产生链接远程分支的方式

产生的方式有两种:

1、克隆远程仓库 Git的clone命令会自动创建一个指向master分支的指针,并命名为origin/master,同时也会在本地指向与远程仓库同样位置。

由于普遍认识,因此分支通常为master,远程仓库名称为origin 可以通过git clone -o '远程仓库名',这个命令将会自定义远程仓库名称

2、添加远程仓库 通过git remote add添加远程仓库,它会添加一个新的远程仓库引用到当前的项目,也就是会产生origin/master这样类似的指针。

更新我们的远程引用

有时候需要同步团队进度,运行 git fetch <remote> 命令,更新本地数据库,移动 origin/master 指针这样的远程引用到更新之后的位置。

但是需要注意的是:抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本,只会在本地有一个不可以修改的origin/serverfix 指针。

这就意味着本地上是一个虚拟的,不能修改的标记,但是commit所有的内容都在里面。只能读到这块的修改。

因此当我们想从远程拉取下来一个本地上没有的分支需要新建一个分支,在这个新分支上进行git merge命令合并远程引用,然后将本地修改的这样就可以进行编辑,最后再通过git push命令提交到远程。

这里有一个快捷的命令,帮助我们快速的完成创建分支,并且合并到这个新分支上,建立在远程跟踪分支之上 git checkout -b '本地分支' '远程跟踪分支' = git checkout -b '本地分支' + git merge '远程跟踪分支'

此外,git push命令我们还可以指定哪个本地分支推送到远程分支当中,例如:行 git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支。

拉取分支

拉取命令:git pull <remote> <branch>

git pull = git fetch + git merge

有设置好的跟踪分支,不管它是显式地设置还是通过 clonecheckout 命令为你创建的,git pull 都会查找当前分支所跟踪的服务器与分支, 从服务器上抓取数据然后尝试合并入那个远程分支。

总结:所以当想从远程拉取下来一个本地上没有的分支的时候,不管是git pull还是git fetch,都需要新建一个分支,然后合并远程分支

跟踪分支

定义:从一个远程跟踪分支检出一个本地分支会自动创建所谓的"跟踪分支"(它跟踪的分支叫做"上游分支")。 跟踪分支是与远程分支有直接关系的本地分支。 如果在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支。

产生跟踪分支的命令: 1、git checkout -b sf origin/serverfix,它会将本地分支与远程分支建立联系,也就是跟踪分支 2、git checkout --track origin/serverfix,手动指定跟踪哪一个远程分支 3、git checkout serverfix,当远程分支中刚好只有一个名字与其匹配,那么git 会自动进行跟踪

查看设置的所有跟踪分支命令: git branch -vv,会列出每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。

注:这些领先、落后、都有的这些数值比较都是本地缓存的进行的,因此当要统计最新的,需要先git fetch --all

删除远程分支

git push origin --delete serverfix,这个命令做的只是从服务器上移除这个指针,比较容易恢复。

相关推荐
cc蒲公英1 小时前
idea git命令初次创建项目至远程
git
高兴就好(石2 小时前
git将远程的master分支的commit都拉取到本地
git
空空kkk5 小时前
Git版本控制(一)
git
毛豆的毛豆Y6 小时前
git 如何 fork 一个仓库的所有分支
git
测试人社区—84167 小时前
Postman API测试指南
人工智能·git·测试工具·自动化·bug·postman
芒克芒克8 小时前
『Git Tag标签+项目远程操作全解:推送、拉取与版本同步实战』
java·git
fruge9 小时前
前端工程化最佳实践:ESLint+Prettier+Git Hooks 统一开发规范
前端·git
_院长大人_10 小时前
解决 Git 提交大文件导致 Push 被拒绝的问题
java·git·后端·elasticsearch
浪潮IT馆10 小时前
win11安装Git
windows·git
SoulmateShkart10 小时前
Git基本使用命令简略版
git