1.推送

  本地的分支并不会自动与远程仓库同步,你可以显示的向远程仓库推送你的分支。例如你在本地创建了一个dev分支,你想其他的人和你一样在dev之下进行工作,可以使用 git push <remote> <branch> 将自己的分支推送到远程仓库。

   git push origin dev 即可。

  下一次其他的人从服务器上抓取数据的时候,他们会在本地生成一个远程分支origin/serverfix,指向服务器的serverfix分支的引用。

  如果你在推送分支的时候,想给分支另取一个名字,可以使用 git push <remote> <branch>:<remote-branch>

  例如 git push <origin> <dev>:<dev-gq> ,将本地的dev分支推送到远程,并且远程分支命名为dev-gq。

注意: 当使用git fetch从远程仓库抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本。换句话说,也就是本地不会自动生成一个新的dev分支,只有一个不可以进行修改的origin/dev分支。

  你可以运行 git merge <origin/dev> 将这些跟踪合并到你正在工作的分支上。当然你也可以在远程跟踪分支上新建一个dev分支,git checkout -b dev origin/dev 这句命令会给你再本地新建一个dev分支,并且起点位于origin/dev。

上面两段话的意思就是,使用git fetch拉取的更新,不会自动被合并到分支中去,workingtree中不会显示这个分支的修改,可以自己执行git merge <origin/dev>命令将origin/dev的更改合并到当前所在的分支,当然也可以新建一个分支dev,然后merge到新建的本地dev分支中;还有一种办法是使用git checkout -b dev origin/dev,这个和使用git merge origin/dev dev是相同的效果。

2.跟踪分支

  从远程跟踪分支检出一个本地分支,会自动创建一个跟踪分支(有时候也叫做上游分支)。如果在一个跟踪分支上运行git pull,Git能够知道从哪里去拉取数据。

当克隆一个仓库的时候,一般会自动创建一个跟踪origin/master的跟踪分支master。

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 ] forgot the brackets
master 1ae2a45 [origin/master] deploying index fix
* serverfix f8674d9 [teamone/server-fix-good: ahead , behind ] this
should do it
testing 5ea463a trying something new

注意:这条命令进行对比的远程分支是来自于你最后一次从服务器上抓取的数据,并不是最新的数据,这时候,你可以运行

git fetch --all
git branch -vv

来得到最新的数据。

3.拉取

  当使用 git fetch  从远程仓库抓取数据的时候,它并不会修改工作目录中的内容,它只会获取数据,然后需要你自己进行合并。然而,还有一个 git pull 命令,它会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据,然后尝试合并进入当前分支。

git pull = git fetch + git merge

4.删除远程分支

  假设你已经通过远程分支完成了所有的工作,也就是所远程分支上的代码已经合并到了master中,并且这个远程分支决定以后不再使用,可以使用带有--delete的git push命令来删除远程分支。

 git push origin --delete dev  //删除远程分支dev

12.Git分支-推送(push)、跟踪分支、拉取(pull)、删除远程分支的更多相关文章

  1. [git]本地查看,重命名,拉取,删除远程分支

    1.git branch -a 查看所有的分支,包含远程仓库.-av:同时显示最近的一个commit信息. 2.git checkout -b newBranch origin/master 拷贝一份 ...

  2. git 拉取指定的远程分支(三种方式)

    直接拉取 git clone -b ants git@github.com:Ants-double/CareerJava.git git clone -b 远程分支名 仓库地址 本地已经有相关的仓库代 ...

  3. Git push将本地版本库的分支推送到远程服务器上对应的分支

    在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构. g ...

  4. 版本控制git之三-多人协作 变基 推送 拉取 删除远程分支

      版本控制git之三-多人协作 wangfeng7399已关注0人评论350人阅读2019-02-20 21:33:08   如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源 ...

  5. git本地分支推送到远程分支

    1.创建的创建和初始化 创建git仓库可以在远端创建一个仓库, 然后check到本地,在本地的文件里创建工程文件,然后提交 也可以将本地现有的工程和远端的空仓库关联 本地创建了一个工程 iOSDemo ...

  6. git创建新分支推送到远程

    1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随便定义.   2.切换本地分支 git ch ...

  7. Git撤回已经推送(push)至远程仓库提交(commit)的版本

    背景 所以,经常会遇到已经提交远程仓库,但是又不是我想要的版本,要撤下来. 回退版本一般使用git reset,又分为: # 不删除工作空间改动代码,撤销commit,不撤销git add . git ...

  8. Git查看、删除远程分支和tag

    本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...

  9. git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法

    git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...

随机推荐

  1. js中ASCII码和字符互相转换的方法

    目录 十进制ASCII码转换成字符 字符转换成十进制ASCII码 十进制ASCII码转换成字符 使用String.fromCodePoint(num1[, ...[, numN]])方法 String ...

  2. Excel—图表函数

    OFFSET(引用函数)它可以找一个区域,把一个区域的值都拿回来 函数语法:OFFSET(从哪个单元格开始,这个单元格下移多少行开始,然后现在的位置再往右多少列开始,要取的值是现在的位置开始下移多少行 ...

  3. Linux多线程编程,为什么要使用线程,使用线程的理由和优点等

    线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,(http://www.0830120.com)如线程之间怎样同步.互斥,这些东西将在本文中介绍. ...

  4. Centos7安装jdk-12的详细过程

    Centos7安装jdk-12的详细过程 2019-04-12   21:23:24 一.下载JDK-12版本 链接地址:官方地址 下载:jdk-12_liunx-x64_bin.tar.gz 二.检 ...

  5. 维护爬虫代理IP池--采集并验证

    任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...

  6. 【java】-- 线程池原理分析

    1.为什么要学习使用多线程? 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担. 线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致 ...

  7. arp断网攻击

    arp断网攻击可以是同局域网内主机无法上网!(可恶搞室友哦,嘻嘻!) 实现原理 arp的中文释义是地址解析协议,全英文 address resolution protocol,是一个将局域网IP地址映 ...

  8. sudo命令详解

    语法 sudo(选项)(参数) 选项 选项 说明 -b 在后台执行指令: -h 显示帮助: -H 将HOME环境变量设为新身份的HOME环境变量: -k 结束密码的有效期限,也就是下次再执行sudo时 ...

  9. BZOJ1431 : MLand

    考虑任意一棵生成树,它的代价是一个一次函数. 因此所有生成树的最小值随着时间变化呈现出的是一个上凸壳. 三分查找最大值即可. 时间复杂度$O(m\log m\log w)$. #include< ...

  10. Python函数参数&time、OS、json模块

    ##可变参数 PORT = 3306 #常量 def mysql(host,user,password,port,charset,sql,db): print('连接mysql') # mysql(' ...