目录

开发当中与远程分支有关的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,这个命令做的只是从服务器上移除这个指针,比较容易恢复。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
csj505 小时前
git分支合并信息查看
git
gqkmiss5 小时前
Git Cherry-pick:核心命令、实践详解
前端·git·前端框架·commit·cherry-pick
小生不才yz10 小时前
15. git push
git
阿虎儿10 小时前
基于三方开源项目二次开发的版本管理最佳实践
git
曼陀罗11 小时前
【Git篇】commit失败后,展示: stash@{0}WIP on Feature_xx:
git
Qter14 小时前
GIT代码提交规范模板
git
nan_black15 小时前
在conda虚拟环境安装GIT并且克隆github上项目指南(解决443问题)
git·github·conda
前端付杰16 小时前
BFG Repo-Cleaner 教程:快速清理 Git 仓库中的敏感数据和大文件
javascript·git·github
大哥喝阔落16 小时前
git操作0409
大数据·git·elasticsearch
FixBug_Nick1 天前
Jenkins配置的JDK,Maven和Git
java·git·jdk·jenkins·maven