转载说明:本作者转载于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
经过上面的解释,估计现在就很容易记住这两个概念,及其它们的区别了。
- reference:https://blog.twofei.com/695/
网友评论