一、目标
本博文中git操作的目标为建立本地分支与远程分支的映射关系(或者为跟踪关系track)。这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。
二、查看本地分支与远程分支的映射关系
使用以下命令(注意是双v):
git branch -vv
可以获得如下信息:
[图片上传中...(1.png-139207-1520316956730-0)]
可以看到分支addFile没有和远程分支建立任何映射,此时若执行如下拉取命令则不成功(因为git此时不知道拉取哪个远程分支和本地分支合并):

同理,若此时执行如下推送命令同样不成功:

二、建立本地分支与远程分支的映射关系
建立当前分支与远程分支的映射关系:
git branch -u origin/addFile
或者使用命令:
git branch --set-upstream-to origin/addFile
得到结果如下:

查看当前本地分支与远程分支的映射关系结果如下:

此时再次拉取,成功信息如下:

再次推送,成功信息如下:

三、撤销本地分支与远程分支的映射关系
撤销本地分支与远程分支的映射关系
git branch --unset-upstream
使用git branch -vv得到结果如下:

可以看到本地分支与远程分支的映射关系已经撤销。
四、问题思考:本地分支只能跟踪远程的同名分支吗?
答案是否定的,本地分支可以与远程不同名的分支建立映射关系,实验时分支结构如下:

可以使本地分支addFile和远程分支editFile建立映射关系:

并且此时可以把本地分支addFile提交到远程分支editFile分支中去:

网友评论