11.Git分支-远程跟踪分支的概念、多个远程仓库的使用
1.远程跟踪分支的概念
远程引用是对远程仓库的引用,包括分支、标签等等。
1.可以通过 git ls-remote <remote> 来获得远程引用的完整列表
2.git remote show <remote> 来获取远程分支的更多相关信息。
如下图所示,运行 git remote show origin 可以得到有哪些远程分支,pull和push分别是与哪个远程仓库交互。

远程跟踪分支:远程跟踪分支是远程分支状态的引用,它们是你不能够移动的本地引用,记录的是你上次连接到远程仓库时,远程分支所处的状态,例如:一般本地会存在一个远程跟踪分支origin/master,跟踪的是远程分支master的状态(这个master是远程分支master,不是本地分支master)。
假设你的网络里有一个在 git.ourcompany.com 的Git服务器。 如果你从这里克隆,Git 的 clone 命令会为你自动将其命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master。 Git 也会给你一个与 origin 的 master分支在指向同一个地方的本地 master 分支,这样你就有工作的基础。
如果你向远端推送了一个分支dev,那么远端会产生dev分支,在本地对应的会有一个指向远端分支的origin/dev指针,也就是远程跟踪分支。
如下图所示,远程仓库有一个分支称作为master,其在本地仓库对应着一个远程跟踪分支origin/master,同时本地还有一个称作为master的本地分支。

当你在本地master上做了一些提交操作之后,同时其他同事提交了更新到远程分支master,这时候远程分支与本地分支的情况可能会出现如下情况:
可以发现,远程跟踪分支origin/master并没有发生移动,本地master和远程仓库master朝着不同的方向在发展。也就是说,只要你不与远程仓库进行连接,远程跟踪分支就不会发生变化。
现在远程仓库有了新的更新,你需要获取这些更新到你的本地仓库,可以运行
git fetch origin ,会从远程仓库抓取本地没有的数据,并且更新到本地数据库,移动远程跟踪分支origin/master指向新的、更新之后的位置。
这条命令会将远程仓库master分支上的内容拉取到远程跟踪分支origin/master下面,并不会是拉取到本地分支master下,工作区的内容不会发生改变。如下图所示:

在抓取了远程分支的代码之后,可以将其merge进本地分支master中,使用 git merge origin/master 。
2.多个远程仓库的使用
有时候,会存在多个远程仓库,比如有时候会存在一个远程仓库,主要用于你们内部小组的开发工作,这个远程仓库是从另一个远程仓库fork过来的。这时候,你可以运行 git remote add <remote> ,添加一个远程仓库引用到当前项目,那么你就可以运行 git fetch <remote> 来得到你新加的远程仓库的代码了。
例子:
你fork了一个远程仓库A到自己的GitHub账号下,名字为B,然后你将自己账号下的B仓库 clone到了本地,进行了一些提交操作,这时候,你发现原始的A有了一些更新,这时候,你可以通过git remote add A和git fetch A将原始仓库A的更新抓取到本地,然后进行merge之后,再将自己本地仓库进行的相关工作一起提交到远程仓库B,然后给远程仓库A发pull request操作来合并你所进行的开发工作到A仓库。(https://www.cnblogs.com/morethink/p/8907980.html)
还有一种方法,可以在GItHub网站上,直接从A将所有的更新拉取到B,通过new 一个pull request就可以了。(https://www.cnblogs.com/eyunhua/p/8463200.html)
11.Git分支-远程跟踪分支的概念、多个远程仓库的使用的更多相关文章
- git 跟踪分支 远程跟踪分支 学习笔记
远程跟踪分支相当于一个只读仓库指针,从服务器上获取数据,不可以被本地直接修改. 跟踪分支相当于一个本地指针 用于项目更新和迭代. 1跟踪分支 (tracking branch) 逻辑示意图 ...
- 开发过程中,本地分支和远程跟踪分支发生了diverge
1 git基本概念梳理 1.1 git的工作目录.暂存区和HEAD指向的版本库以及branch的概念 一个branch就是整个产品的一套代码,而工作目录中就是存放的本branch最新的代码,HEAD指 ...
- 12.Git分支-推送(push)、跟踪分支、拉取(pull)、删除远程分支
1.推送 本地的分支并不会自动与远程仓库同步,你可以显示的向远程仓库推送你的分支.例如你在本地创建了一个dev分支,你想其他的人和你一样在dev之下进行工作,可以使用 git push <rem ...
- 20.远程分支&跟踪分支
远程分支 远程引用是对远程仓库的引用(指针),包括分支.标签等等. 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show ...
- 解决 git branch -a 无法全部显示远程的分支,只显示master分支
新建分支 若遇到 git branch -a 无法全部显示远程的分支,只显示master分支 可以通过 git fetch 将本地远程跟踪分支进行更新,与远程分支保持一致
- git 远程新建分支后,本地查看不到
使用以下命令同步 git remote # 列出所有远程主机git remote update origin --prune # 更新远程主机origin 整理分支git branch -r # 列出 ...
- git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
1.分支管理 新建并切换分支:git checkout -b <name>新建本地分支并关联到远程分支git checkout -b myRelease origin/Release合并某 ...
- Git如何将本地test分支设置跟踪origin/test分支
前提条件: 有一个远程仓库其中只有一个master分支,然后我把它clone到本地 1.新建一个本地分支test, 2.然后把它push到远程仓库(git push origin test) 3.本地 ...
- git 查看远程分支、本地分支、创建分支、把分支推到远程repository、删除本地分支
1 查看远程分支 $ git branch -a * br-2.1.2.2 master remotes/origin/HEAD -> origin/master remotes/origin/ ...
随机推荐
- POSIX-Data Structure
struct sigevent The <signal.h> header shall define the sigeventstructure, which shall include ...
- 在ideaUI中建立maven项目
1.新建New 注意:第一次创建maven项目需要在有网情况下进行 2.可以看见我们建立的项目了
- 蓝桥杯 卡片换位(bfs)
卡片换位 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵.还有一个格子是空着的. 你可以把一张牌移动到相邻的空 ...
- .net core Razor视图的TagHelper使用方法介绍
TagHelper TagHelper是ASP.NET 5的一个新特性.也许在你还没有听说过它的时候, 它已经在技术人员之间引起了大量讨论,甚至有一部分称它为服务器控件的回归.实际上它只不过是一个简化 ...
- C#代码总结03---通过获取类型,分类对前台页面的控件进行赋值操作
该方法: 一般用于将数据库中的基本信息字段显示到前台页面对应的字段控件中 private void InitViewZc(XxEntity model) { foreach (var info in ...
- BZOJ.5305.[HAOI2018]苹果树(组合 计数)
LOJ BZOJ 洛谷 BZOJ上除了0ms的Rank1啦.明明这题常数很好优化的. 首先,\(n=1\)时有\(2\)个位置放叶子,\(n=2\)时有\(3\)个... 可知\(n\)个点的有标号二 ...
- C++第三课:类的使用(一)[个人见解]
说到C++语言的类,也称对象.在C++中首先得了解的三大特性:继承.封装.多态. 使用C++类,间接的反映出你所学习C++的深度,这章很重要,但小编未必能全部讲到,还望谅解. 类是C++语言中新添加的 ...
- CentOS7上Docker简单安装及nginx部署
安装 如果原来安装过docker,先把原来的删掉,再安装(如果是首次安装docker忽略第一步,直接在第二步看起) 1.1先查看下已经安装了那些docker yum list installed | ...
- myeclipse中配置自己安装的Tomcat
myeclipse中配置自己安装的Tomcat 在myeclipse中配置好jdk,Tomcat之后,如果是web项目需要部署运行,但在部署时发现配置好的Tomcat没有显示,只显示了myeclips ...
- python学习:元组和嵌套
tuple(元组):只是可读,不可以修改# tup1 = () #空元组# tup2 = (20,) #元组内有一个元素,需要在元素后添加逗号 a = (1,2,3,4)print(a[1])a[1] ...