首页 > 其他分享 >git本地分支,远程分支,远程跟踪分支的关系

git本地分支,远程分支,远程跟踪分支的关系

时间:2023-04-17 17:27:05浏览次数:38  
标签:git 跟踪 本地 new1 远程 分支

一、我的理解

其实概念很简单,本地分支就是在本地机器上的分支;远程分支就是远程机器上的分支;远程跟踪分支就是跟踪远程分支的分支,这个远程跟踪分支也是在本地上的,但是你不能切换到该分支上,也不能修改它的数据。

 随着你进一步开发:

 可以看到远程跟踪分支一直指向d5a22c,而本地分支一直向前移动,所以远程跟踪分支只是用来标识本地电脑上一次与远程服务器通信时的远程分支状态而已。

二、设置远程跟踪分支

(1)新建分支并跟踪远程分支

假如你有一个远程分支new1,本地还没有该分支:你可以使用以下语法创建一个本地分支,并对远程分支进行跟踪。也就是创建一个本地分支和一个远程跟踪分支。

git checkout -b <新建的本地分支> <远程服务器名称>/<远程分支名称>

以new1为例:新建new1本地分支跟踪远程服务器new1分支。

git checkout -b new1 origin/new1

你也可以随便命名:新建sbsb分支,跟踪远程服务器new1分支

git checkout -b sbsb origin/new1

但是通常情况下,本地分支如果跟踪远程分支,应该名称一样,才不易混淆。

以下命令也可以新建分支跟踪远程分支:

git checkout --track <远程服务器名称>/<远程分支名称>

同样以new1为例子:

git checkout --track origin/new1

可以看到 git checkout --track 省去了命名本地分支,因为它默认新建的分支与远程分支同名。

(2)指定已有的分支跟踪远程分支

语法:-u其实是 --set-upstream-to,即设置上游分支,(一些书中也称远程分支为上游分支,两者等价)

git branch <已有分支的名称> -u <远程服务器名称>/<远程分支名称>

假如你有一个本地分支test,你就想用这个test分支跟踪远程分支new1。

假设你现在处于远程分支test下,那么直接使用:

git branch -u origin/new1

假设你在其他分支下。你需要显示的指明出来:

git branch test -u origin/new1

如果你现在就想直接推送,并且设置远程分支,你可以使用以下语法:

git push -u <远程服务器名称>/<远程分支名称>

例子:当前在test分支上,我们想把test的内容推送到new1上,并设置new1为远程分支,进行跟踪

git push -u origin/new1

(3) 设置远程跟踪分支的好处

1. 一旦设置了远程分支,那么你直接使用git push, git fetch, git pull等命令就可以直接达到目的,而不用像原来一样再git push <远程服务器名称> <远程分支名称>。

2.设置了远程跟踪分支,我们可以知道我们上一次和远程服务器通信时,远程分支的进度在哪里。

例子:假设test分支已经对new1设置了远程跟踪,那么当前我们可以在test直接执行以下命令。

git push
git fetch
git pull

由于设置了远程跟踪分支,git直接知道从哪里拉取或推送代码,省略了之前的远程服务器名和远程分支名。

(4)查看远程分支与本地分支的跟踪情况

git branch -vv

以我电脑的某个仓库运行结果为例子:

 上面有四行四列,第一列为本地分支名,第二列对应的hash值,第三列对应的远程分支,第四列git commit提交的注释。

可以看到有四个分支对远程服务器的分支进行跟踪,其中,new2 和 newkk 分支跟踪的远程分支都是new2。

(5)删除远程分支

1.删除远程分支:

git push <远程服务器名> --delete <远程分支名>

2.查找仍然在远程跟踪,但是远程已删除的无用分支(什么时候会出现这种情况?1.直接在代码托管平台删除该远程分支;2.同事运行了git push <远程服务器名> --delete <远程分支名>;这两种情况都不是在你本地上的操作,那么你本地依然会远程跟踪这些已删除的无用分支)

git remote prune <远程服务器名> --dry-run

3.清除仍然在远程跟踪,但是远程已删除的无用分支

git remote prune <远程服务器名>

 

标签:git,跟踪,本地,new1,远程,分支
From: https://www.cnblogs.com/hmy-666/p/17326120.html

相关文章

  • Git如何放弃所有本地修改
    git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。git reset --hard HASH #返回到某个节点,不保留修改。git reset --soft HASH #返回到某个节点。保留修改......
  • Git查看删除本地或远程分支
    1.查看本地分支gitbranch2.产看远程分支gitbranch-a3.删除本地分支gitbranch-dbranchname注意:删除本地分支时要切换到其他分支gitbranch-Dbranchname  强制删除本地分支4.删除远程分支gitpushorigin--deletebranchname ......
  • Git log怎么查看分支提交过哪些文件
    以上简单介绍了一些 gitlog 命令支持的选项。表2-2还列出了一些其他常用的选项及其释义。选项说明-p按补丁格式显示每个更新之间的差异。--word-diff按worddiff格式显示差异。--stat显示每次更新的文件修改统计信息。--shortstat只显示--stat中最后的行数修改添加移除统......
  • git使用
    今日内容git介绍和安装git使用流程git常用命令git忽略文件git多分支git远程仓库ssh方式连接远程仓库协同开发冲突解决线上分支合并远程仓库回滚1git软件介绍和安装#代码管理软件-git-svn#它们能做的事情--->用来做代码管理[文件......
  • 通过github搭建简单的网站
    正常搭建个网站可能需要服务器和域名,但是有没有不花钱的方法呢,github可以。首先新建个工程,名称随意然后新建个index.html文件做为首页之后点击设定最下面有个GitHubPages选择选择下面的内容,你的网站地址就会生成出来了打开网址https://huyunan.github.io/haha/ ......
  • 远程的文件转换成byte数组
    1、使用OkHttp3库来将远程的GIF文件转换成InputStreamOkHttpClientclient=newOkHttpClient();Requestrequest=newRequest.Builder().url("http://xxxxx/resources/upload/20230414/3_yk_anim_cn_64_1.gif").build();......
  • 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配
    前言本文介绍vue3-element-admin如何通过Husky+Lint-staged+Commitlint+Commitizen+cz-git来配置Git提交代码规范。核心内容是配置Husky的pre-commit和commit-msg两个钩子:pre-commit:Husky+Lint-staged整合实现Git提交前代码规范检测/格式化(前提......
  • 内网远程控制软件被控端 Radmin server (bat文件)安装不成功是因为未获得管理员权限
    Radmin注意:bat中显示以下内容(而非黑屏)才是安装成功。如果闪退,则说明未安装成功。经测试,在Windows7下的C盘中运行该bat文件,总是闪退(未安装成功),用管理员模式运行仍如此,这可能是未取得管理员权限造成的。目前未找到直接解决方案。但可以从其他盘符(如D盘)中成功运行、安装。la......
  • 弹簧自动装配设备如何实现数据采集和远程监控
    弹簧自动装配设备是对产品弹簧组件以及其他配件进行自动化组装,可以根据产品结构搭配焊锡、锁螺丝等工艺,常见于电池盒、遥控器、电子玩具、工业设备等加工制造业。传统的人工组装方式费时费力,通过自动化设备生产,可以为企业节省大量的人工成本,又能提高产品生产效率。通过弹簧自动装配......
  • gitee github 左侧栏树形显示插件 Octotree codetree 浏览器插件
    起因看到一位仁兄用gitee做仓库https://gitee.com/zhengqingya/java-developer-document然后左侧栏挺方便(抖音视频)下载chrome扩展市场搜octotree用于githubcodetree用于gitee双核浏览器扩展市场搜octotree用于githubgitcodetree用于gitee......