11.Git分支-远程跟踪分支的概念、多个远程仓库的使用

摘要:
如下图所示,运行gitremoteshowoigin可以获得远程分支和远程仓库,并与之进行推拉交互。
1.远程跟踪分支的概念

  远程引用是对远程仓库的引用,包括分支、标签等等。

 1.可以通过 git ls-remote <remote> 来获得远程引用的完整列表

 2.git remote show <remote> 来获取远程分支的更多相关信息。

 如下图所示,运行 git remote show origin 可以得到有哪些远程分支,pull和push分别是与哪个远程仓库交互。

11.Git分支-远程跟踪分支的概念、多个远程仓库的使用第1张

  远程跟踪分支:远程跟踪分支是远程分支状态的引用,它们是你不能够移动的本地引用,记录的是你上次连接到远程仓库时,远程分支所处的状态,例如:一般本地会存在一个远程跟踪分支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的本地分支。

11.Git分支-远程跟踪分支的概念、多个远程仓库的使用第2张

  当你在本地master上做了一些提交操作之后,同时其他同事提交了更新到远程分支master,这时候远程分支与本地分支的情况可能会出现如下情况:

11.Git分支-远程跟踪分支的概念、多个远程仓库的使用第3张  可以发现,远程跟踪分支origin/master并没有发生移动,本地master和远程仓库master朝着不同的方向在发展。也就是说,只要你不与远程仓库进行连接,远程跟踪分支就不会发生变化。

  现在远程仓库有了新的更新,你需要获取这些更新到你的本地仓库,可以运行

 git fetch origin ,会从远程仓库抓取本地没有的数据,并且更新到本地数据库,移动远程跟踪分支origin/master指向新的、更新之后的位置。

这条命令会将远程仓库master分支上的内容拉取到远程跟踪分支origin/master下面,并不会是拉取到本地分支master下,工作区的内容不会发生改变。如下图所示:

11.Git分支-远程跟踪分支的概念、多个远程仓库的使用第4张

  在抓取了远程分支的代码之后,可以将其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分支-远程跟踪分支的概念、多个远程仓库的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux基础学习(6)--Linux软件安装解决Win8设置为快速启动后ubuntu不能访问win下磁盘的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

git使用说明

初次使用请参考百度,google,博客园。这里也有一篇入门指南,简练精彩:http://www.kechuandai.net/git%E4%BD%BF%E7%94%A8%E5%B0%8F%E8%AE%B0/ 我把自己碰到的问题记录下,备忘。 1 修改文件并提交到github [luwenwei@dev01v ~/git/helww/labs]$ vim R...

git操作

Git常用操作命令 1、git的原理 基本概念 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 add:将工作区同步到暂存区 commit:将暂存区同步到本地仓库 push:将本地仓库同步到远程仓库 pull:将远程仓库同步到工作区 checkout:将本地仓库...

深入MySQL复制(二):基于GTID复制

相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多。本文对gtid复制稍作介绍。 MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html 1.gtid基本概念 传统的基于binlog position复制的方式有个严重的缺点:如果s...

查找2个分支的共同父节点

1.使用命令来直接查找假设有分支A和分支B,那么使用以下命令    【http://stackoverflow.com/questions/1549146/find-common-ancestor-of-two-branches】 git merge-base A B 就可以查看这2个分支的共同父节点 现在有chucklu_zhCN分支以及master分支...

cocoapods安装好后repo换源

1.pod repo 然后会出现以下内容,如下是我已经换了之后的,而你的URL还是github的 master - Type: git (master) - URL: https://git.coding.net/CocoaPods/Specs.git - Path: /Users/Mingo/.cocoapods/repos/master 网上给出了一个...

Nginx+keepalived的高可用集群(一、基本概念介绍)

1.背景现在越来越多的业务系统要保证24小时不间断运行从而提供高效、稳定、可靠的信息化服务已经成为亟待解决的问题。经过查询大量的资料以后,我们选用Nginx+keepalived的方式来保证集成平台的高可用(High Available)和负载均衡(Load Balancing)。 2.方案选择 2.1Nginx: 1、nginx是个轻量级、高性能的web...