对git的origin/master、master一直存有疑惑,最近集中阅读了几篇文章,试着在这里总结一下。在这篇文章中,作者谈到git的使用主要围绕下面3种操作展开:

  1. 从git中拉取数据(git clone);
  2. 修改数据;
  3. 提交修改的数据(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命令,它的完整写法如下:

  1. 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

将远程origin仓库的xx分支合并到本地的yy分支

  • 方法1

    1. git fetch origin xx
    2. git checkout yy
    3. git merge FETCH_HEAD
  • 方法 2

    1. git checkout yy
    2. git merge origin/xx

    方法2的变种

    1. git checkout xx
    2. git pull
    3. git checkout yy
    4. git merge xx

    删除分支

    git branch -d branchName
    如果删除报错“error: The branch ‘branchName’ is not fully merged.”,使用下面的命令:
    git branch -D branchName