美文网首页
master、origin master 与 origin/ma

master、origin master 与 origin/ma

作者: 世界上的一道风 | 来源:发表于2019-08-16 18:40 被阅读0次

    转载说明:本作者转载于reference用于自我学习和复查,大家请去reference支持原作者。

    • master 这个很好理解,它代表本地的某个分支名。
    • origin master 代表着两个概念,前面的 origin 代表远程名,后面的 master 代表远程分支名。
      origin/master 只代表一个概念,即远程分支名,是从远程拉取代码后在本地建立的一份拷贝(因此也有人把它叫作本地分支)。

    举几个例子可能会更加清晰地说明问题:

    • 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master的分支到本地分支origin/master` 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。

    • 执行 git merge origin/master 时,它的意思是合并名为 origin/master 的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。

    • 执行 git push origin master 时,它的意思是推送本地的 master 分支到远程 origin,涉及到远程以及分支,当然也得分开写了。

    • 还可以一次性拉取多个分支的代码:git fetch origin master stable oldstable;

    • 也还可以一次性合并多个分支的代码:git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290;

    • 执行 git branch -a 可以查看所有的分支名:

    root@localhost:/dat/taoblog# git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/api
      remotes/origin/draft
      remotes/origin/master
      remotes/origin/rsync
      remotes/origin/waterfall
    
    • 还可以进入 .git目录看看它们的结构:
    root@localhost:/dat/taoblog# cd .git
    root@localhost:/dat/taoblog/.git# tree refs/
    refs/
    |-- heads
    |   `-- master
    |-- remotes
    |   `-- origin
    |       |-- api
    |       |-- draft
    |       |-- HEAD
    |       |-- master
    |       |-- rsync
    |       `-- waterfall
    `-- tags
    
    4 directories, 7 files
    

    并且,它们都只是一串简单的哈希值:

    root@localhost:/dat/taoblog/.git# cat refs/remotes/origin/waterfall
    8d6e2a06bc5df0b87b3b05993a9e36749ccc857a
    

    经过上面的解释,估计现在就很容易记住这两个概念,及其它们的区别了。

    相关文章

      网友评论

          本文标题:master、origin master 与 origin/ma

          本文链接:https://www.haomeiwen.com/subject/gxoqsctx.html