最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    正文概述 掘金(明洁)   2021-02-17   546

    git分支

    几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。

    Git 的默认分支名字是 master。Git 的 master 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。一个分支上包含多个提交对象(对树对象的封装),Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 master 分支会在每次提交时自动向前移动。(下图的header指向f30ab)。如下图所示: git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    1、 创建一个分支

       git branch 分支名
    

    这会在当前所在的提交对象上创建一个指针。如下图所示: git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    2、切换分支

       git checkout 分支名
    

    这是指针会指向test分支,如下图所示: git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    3、在新分支上工作并且提交

    HEAD 分支随着提交操作自动向前移动,最后的分支图如下: git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    4、再次切换到master分支

       git checkout master
    

    这条命令做了两件事。 一是使 HEAD 指回 master 分支,二是将工作目录恢复成 master 分支所指向的快照内容。也就是说,你现在做修改的话,项目将始于一个较旧的版本。 本质上来讲,这就是忽略 testing 分支所做的修改,以便于向另一个方向进行开发。如下图所示: git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    注意:分支切换会改变你工作目录中的文件,在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

    5、现在在master分支上工作并且提交

    现在,这个项目的提交历史已经产生了分叉,因为刚才你创建了一个新分支,并切换过去进行了一些工作,随后又切换回 master 分支进行了另外一些工作。 上述两次改动针对的是不同分支:你可以在不同分支间不断地来回切换和工作,并在时机成熟时将它们合并起来。如下图:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    6、合并master和新分支

    git merge 新分支名
    

    此时master分支上就已经有了新分支上修改的代码。

    团队协作之远程库

    远程跟踪分支

    远程跟踪分支是远程分支状态的引用。它们是你无法移动的本地引用。一旦你进行了网络通信, Git 就会为你移动它们以精确反映远程仓库的状态。

    跟踪分支

    从一个远程跟踪分支检出一个本地分支会自动创建所谓的“跟踪分支”(它跟踪的分支叫做“上游分支”)。 跟踪分支是与远程分支有直接关系的本地分支。

    本地分支

    本地仓库创建的本地分支。

    跟踪分支是本地分支与远程跟踪分支交互的桥梁。当我们克隆的时候,默认会自动生成一个master本地分支(已经跟踪了对应的远程跟踪分支)。

    当本地分支没有跟踪远程跟踪分支时

    • 自己创建一个分支,并推送到远程仓库时
      git push origin master
    

    虽然上面的命令可以把本地分支推送到远程分支,但是我们能不能更简化呢?答案肯定是可以的,git push就可以了,但是现在会出现一个问题,如下图:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    原因就是本地分支没有跟踪跟踪远程分支,我们执行下面的命令:

    git branch -u 仓库名(别名)/分支名
    

    但是这样又会出现一个问题,如下图:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    为什么呢?因为从始至终都没有往远程仓库推过这个分支,所以不存在origin/master远程跟踪分支。接下来执行这个命令:

    git push origin master
    

    此时,远程跟踪分支已经存在,如下图:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    然后执行上面的命令就没问题了。

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    最后当我们更改了master分支,直接执行git push就行。当我们要更新master分支时,直接执行git pull就行。

    实现上面的功能,其实有更简单的命令:git push -u origin master,在第一次push的时候加个选择项-u

    • 别人创建了分支并且推到了远程仓库,我们自己需要拉取这个分支

    首先我们要先执行下面的命令

    git fetch 仓库名 分支名
    

    但是会出现这样的情况,如下图:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    根据执行命令的结果,我们现在没有本地分支wang,所以需要手动创建和合并。需要执行下面的命令:

    git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    这样我们已经拿到了别人提交的分支,因为现在本地分支没有跟踪远程跟踪分支,所以每次跟新别人分支的时候,都要执行上面的命令,非常之繁琐,有没有解决的办法呢?当然是有的,和上面第一种情况一样,只需要跟踪远程跟踪分支即可。

    git fetch可以直接省略,直接执行 git checkout -b 分支名 远程跟踪分支名
    

    以后的更新就可以直接git pull了。

    所以在git团队协助开发时,我们要注意本地分支要跟踪远程跟踪分支。


    起源地下载网 » git版本控制(二):本地分支、跟踪分支、远程跟踪分支

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元