master、origin master 与 origin/master

转载说明:本作者转载于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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,488评论 0 3
  • 1.GitHub 有什么用 学习优秀的开源项目开源社区一直有一句流行的话叫「不要重复发明轮子」,某种意义上正是因为...
    Clemente阅读 1,476评论 1 14
  • 说明:本文是对Git原理的学习过程中,一些重要的内容摘抄。里面的图文大部分来自git-sam.com网站。此网站对...
    现代愚公BevisWu阅读 413评论 0 0
  • Git 命令 mkdir testcd testtouch a.md alias 设置别名 git config ...
    任教主来也阅读 697评论 0 0
  • 1. GIT命令 git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个re...
    江边一蓑烟阅读 842评论 0 0