【git】3.5 git分支-远程分支
资料来源
(1) https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF
1.远程分支
1.1 <remote>/<branch>
(1) 远程分支以<remote>/<branch>的形式命名;
(2) 例如,想查看最后一次与远程仓库origin通信时master分支的状态,可以查看origin/master分支;
1.2 origin/master
(1) 假设网络里有一个在git.ourcompany.com的Git服务器,如果从这里clone, git的clone命令会自动将其命名为origin,拉取它的所有数据,创建一个指向它的master分支的指针,并且在本地将其命名为origin/master(远程分支名); git也会给你一个与origin的master分支指向同一地方的本地master分支;
注1:远程仓库名"origin"与分支名字"master"一样,在git中没有任何特别的含义;
注2: "origin"是运行git clone时默认的远程仓库名字;
【补充图片】
1.3 git fetch <remote>与git merge <remote> <branch>
(1) 如果要与给定的远程仓库同步数据,运行git fetch <remote>命令,如git fetch origin;
(2) git fetch origin命令查找"origin"是哪一个服务器(在本例中,它是git.ourcompany.com),从中抓取没有的数据,并且更新本地数据库,但不会修改工作目录中的内容;
(3) 运行git merge origin/serverfix可以将git fetch origin对本地数据库的更新合并到当前本地分支上;
【补充图片】
1.4 git push <remote> <branch>与git push <remote> <local_branch>:<remote_branch>
(1) 当想要公开分享一个分支时,需要将其推送到有写入权限的远程仓库上; 本地分支不会自动与远程仓库同步,必须显式地推送想要分享的分支;
(2) 示例: 当执行git pull origin serverfix时,git自动将serverfix分支名字展开为refs/heads/serverfix:refs/heads/serverfix,意味着推动本地的serverfix分支来更新远程仓库上的serverfix分支;
(3) 示例: git pull origin serverfix:serverfix与git pull origin serverfix效果相同,即推送本地的serverfix分支,将其作为远程仓库的serverfix分支,但是git pull origin serverfix:serverfix这种用法格式可以将本地分支推送到一个命名不相同的远程分支,如git push origin serverfix:awesomebranch,将本地的serverfix分支推送到远程仓库上的awesomebranch分支;
1.5 git checkout -b <local_branch> <remote>/<remote_branch>与git checkout -b <local_branch>
(1) 如果想要在自己的serverfix分支上工作,可以将其建立在远程跟踪分支之上,如git checkout -b serverfix origin/serverfix; 这是从远程分支检出一个本地分支的方法,其中本地分支叫做"跟踪分支","跟踪分支"是与远程分支有直接关系的本地分支; 如果在一个跟踪分支上执行git pull, git能自动地识别去哪个服务器上抓取;
(2) git checkout --track <remote>/<remote_branch>等同于git checkout -b <local_branch> <remote>/<remote_branch>;
(3) 如果要查看所有跟踪分支,可以使用git branch -vv;