对git的origin/master、master一直存有疑惑,最近集中阅读了几篇文章,试着在这里总结一下。在这篇文章中,作者谈到git的使用主要围绕下面3种操作展开:
- 从git中拉取数据(git clone);
- 修改数据;
- 提交修改的数据(git push)
这3个步骤涉及到两个repository,一个是remote repository,另外一个是local repository。首先,git clone是从remote repository(branch)拷贝一个副本到本地,在git push之前,所有的修改都是在local repository(branch)进行,remote branch和local branch是完全独立的。
在git clone完成之后,git会将远程的repository命名为origin,建立一个指向master分支的指针,我们用(远程仓库名)/(分支名)这样的形式表示远程分支,比如origin/master表示的是远程仓库的master分支。
当把数据从远程的仓库clone到本地后,本地也会有一个master分支,master指的是本地分支。再来看git push命令,它的完整写法如下:
git push origin [local branch]:[remote branch]
什么意思呢?以git push origin master:master为例,它的语义是将本地仓库的master分支push到远程仓库的master分支,通常我们在push代码时,本地仓库的分支名称和远程仓库的分支名称一致,所以会省略到后者。
git pull等价于:1、git fetch origin branchName;2、git merge FETCH_HEAD
git push origin branchName
git pull origin branchName