zoukankan      html  css  js  c++  java
  • git命令详解( 六 )

    此为git命令的第六篇

    远程跟踪分支

    不知道大家有没有发现在前面几篇中Git 好像知道 master 与 o/master 是相关的。当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 master 和本地的 master 分支进行了关联。这种关联在以下两种情况下可以清楚地得到展示:

        pull 操作时, 提交记录会被先下载到 o/master 上,之后再合并到本地的 master 分支。隐含的合并目标由这个关联确定的。

        push 操作时, 我们把工作从 master 推到远程仓库中的 master 分支(同时会更新远程分支 o/master) 。这个推送的目的地也是由这种关联确定的!

    现在我们再来说一个概念远程分支

    远程跟踪

    直接了当地讲,master 和 o/master 的关联关系就是由分支的“remote tracking”属性决定的。master 被设定为跟踪 o/master —— 这意味着为 master 分支指定了推送的目的地以及拉取后合并的目标。

    你可能想知道 master 分支上这个属性是怎么被设定的,你并没有用任何命令指定过这个属性呀!好吧, 当你克隆仓库的时候, Git 就自动帮你把这个属性设置好了。

    当你克隆时, Git 会为远程仓库中的每个分支在本地仓库中创建一个远程分支(比如 o/master)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为 master

    克隆完成后,你会得到一个本地分支(如果没有这个本地分支的话,你的目录就是“空白”的),但是可以查看远程仓库中所有的分支(如果你好奇心很强的话)。这样做对于本地仓库和远程仓库来说,都是最佳选择。

    这也解释了为什么会在克隆的时候会看到下面的输出:

    local branch "master" set to track remote branch "o/master"

    我能自己指定这个属性吗?

    当然可以啦!你可以让任意分支跟踪 o/master, 然后该分支会像 master 分支一样得到隐含的 push 目的地以及 merge 的目标。 这意味着你可以在分支 totallyNotMaster 上执行 git push,将工作推送到远程仓库的 master 分支上。

    有两种方法设置这个属性

    方法一:

    通过远程分支检出一个新的分支,执行:

    git checkout -b totallyNotMaster o/master

    就可以创建一个名为 totallyNotMaster 的分支,它跟踪远程分支 o/master

    执行命令:git ckeckout -b foo o/master

         git pull

    git push 同样适用

    执行命令:git checkout -b foo o/master

         git commit

         git push

    方法二:

    另一种设置远程追踪分支的方法就是使用:git branch -u 命令,执行:

    git branch -u o/master foo

    这样 foo 就会跟踪 o/master 了。如果当前就在 foo 分支上, 还可以省略 foo:

    git branch -u o/master

    看看这种方式的实际的效果...

     执行命令:git branch -u o/master foo

         git commit

         git push

     

  • 相关阅读:
    [USACO5.1]二维凸包模板
    HTML 5 Web 存储
    计算两个坐标点的距离(高德or百度)
    Cache的一些总结
    PowerDesigner最基础的使用方法
    MongoDB安装
    MangoDB CSharp Driver
    Linq语法详细
    where用法
    .Net下二进制形式的文件存储与读取
  • 原文地址:https://www.cnblogs.com/suihang/p/10535337.html
Copyright © 2011-2022 走看看