远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。

1 查看远程分支 git branch -r 或 git ls-remote

2 拉取合并远程分支

2.1 拉取 git fetch origin


git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容。 它只会获取数据然后让你自己合并。

2.2 拉取并合并远程分支 git pull [origin] [branch]

大多数情况下它的含义是一个 git fetch紧接着一个 git merge 命令。

3 推送到远程分支

3.1 git push remote branch

  1. $ git push origin serverfix
  2. Counting objects: 24, done.
  3. Delta compression using up to 8 threads.
  4. Compressing objects: 100% (15/15), done.
  5. Writing objects: 100% (24/24), 1.91 KiB | 0 bytes/s, done.
  6. Total 24 (delta 2), reused 0 (delta 0)
  7. To https://github.com/schacon/simplegit
  8. * [new branch] serverfix -> serverfix

“推送本地的 serverfix 分支来更新远程仓库上的 serverfix 分支。

3.2git push origin serverfix:serverfix

它会做同样的事,推送本地的 serverfix 分支,将其作为远程仓库的 serverfix 分支
可以通过这种格式来推送本地分支到一个命名不相同的远程分支
git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支。

4 合并远程分支 git merge origin/serverfix

5 创建基于远程分支的本地分支(跟踪分支)

git checkout -b serverfix origin/serverfix
这种创建分支,会自动建立本地分支自动跟踪远程分支,,比如当clone一个项目时,它通常会自动地创建一个跟踪 origin/mastermaster 分支,如果在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支。

5.1 快捷创建跟踪分支 —track

  1. $ git checkout --track origin/serverfix
  2. Branch serverfix set up to track remote branch serverfix from origin.
  3. Switched to a new branch 'serverfix'

5.2可以创建不同于远程分支的分支名,如:

  1. git checkout -b sf origin/serverfix

5.3 设置或更改跟踪的远程分支

—set-upstream-to 或 -u

  1. $ git branch -u origin/serverfix
  2. Branch serverfix set up to track remote branch serverfix from origin.

** 我们也可以在push的时候,关联远程分支,以后就可以直接git push ,自动会推到关联的远程分支
git push -u origin branch

5.4 查看所有的跟踪分支

git branch -vv

  1. $ git branch -vv
  2. iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets
  3. master 1ae2a45 [origin/master] deploying index fix
  4. * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it
  5. testing 5ea463a trying something new

5.5 创建分支但不切换

使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。

  1. git fetch origin 远程分支名x:本地分支名x

6 删除远程分支

  1. $ git push origin --delete serverfix
  2. To https://github.com/schacon/simplegit
  3. - [deleted] serverfix

7 撤销本地分支与远程分支的映射关系

git branch —unset-upstream