本地的分支并不会自动与远程仓库同步,你能够显示的向远程仓库推送你的分支。例如你在本地建立了一个dev分支,你想其余的人和你同样在dev之下进行工做,可使用 git push <remote> <branch> 将本身的分支推送到远程仓库。git
git push origin dev 便可。服务器
下一次其余的人从服务器上抓取数据的时候,他们会在本地生成一个远程分支origin/serverfix,指向服务器的serverfix分支的引用。fetch
若是你在推送分支的时候,想给分支另取一个名字,可使用 git push <remote> <branch>:<remote-branch> this
例如 git push <origin> <dev>:<dev-gq> ,将本地的dev分支推送到远程,而且远程分支命名为dev-gq。spa
注意: 当从远程仓库抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本。换句话说,也就是本地不会自动生成一个新的dev分支,只有一个不能够进行修改的origin/dev分支。code
你能够运行 git merge <origin/dev> 将这些跟踪合并到你正在工做的分支上。固然你也能够在远程跟踪分支上新建一个dev分支,git checkout -b dev origin/dev 这句命令会给你再本地新建一个dev分支,而且起点位于origin/dev。server
从远程跟踪分支检出一个本地分支,会自动建立一个跟踪分支(有时候也叫作上游分支)。若是在一个跟踪分支上运行git pull,Git可以知道从哪里去拉取数据。blog
当克隆一个仓库的时候,通常会自动建立一个跟踪origin/master的跟踪分支master。rem
git checkout -b <branch> <remote>/<branch> //建立一个跟踪分支
例子:git checkout -b dev origin/dev
相比于上述命令,Git提供了一个快捷方式来建立跟踪分支: git checkout --track <remote>/<branch> 同步
例子:git checkout --track origin/dev 在本地建立一个dev跟踪分支,它起始于origin/dev分支。
若是不想要使用dev这个分支做为本地分支的名字,可使用 git checkout --track dev-gq origin/dev 将本地分支的名字命名为dev-gq。
设置一个已有的跟踪分支跟踪刚刚拉取下来的远程分支,或者要修改正在跟踪的上游分支,可使用git branch带上-u或者--set-upstream-to参数来进行设置。
例子: git branch -u origin/dev 设置本地跟踪分支dev,跟踪远程跟踪分支origin/dev。
git branch -vv 会将全部的本地分支列出来,能够看到各个分支正在跟踪哪一个远程分支,本地分支相对于远程分支来讲,领先或者落后了多少。
$ git branch -vv iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets master 1ae2a45 [origin/master] deploying index fix * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it testing 5ea463a trying something new
注意:这条命令进行对比的远程分支是来自于你最后一次从服务器上抓取的数据,并非最新的数据,这时候,你能够运行
git fetch --all
git branch -vv
来获得最新的数据。
当使用 git fetch 从远程仓库抓取数据的时候,它并不会修改工做目录中的内容,它只会获取数据,而后须要你本身进行合并。然而,还有一个 git pull 命令,它会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据,而后尝试合并进入当前分支。
git pull = git fetch + git merge
假设你已经经过远程分支完成了全部的工做,也就是所远程分支上的代码已经合并到了master中,而且这个远程分支决定之后再也不使用,可使用带有--delete的git push命令来删除远程分支。
git push origin --delete dev //删除远程分支dev