引言

本篇博客介绍将现有的本地分支以新的分支形式推送到远程库中,和以新的分支的形式从远程库中拉取一个分支。这两个功能都是比较简单的操作,但是在实际开发中,可能会在开发初期有所触及。比如我们希望将远程的dev分支拉取到本地来进行开发,或者将本地的dev分支推到远程库中去等等。

推送本地分支

在EGit中,我们切换到一个已存在的分支,或者新建一个新的分支:

右键项目 ,Team>Switch To>New Branch

此时,我们已经切换到了新建的这个"feature_push_new_branch"分支上

再次右键项目>Team>Push Branch '当前分支名称'...

这里由于项目已经关联了一个远程库,因此Destination选项栏中的信息已经自动创建完毕,而Branch输入框就代表在远程库上显示的分支名称,这里为了区分显示,我特意手动修改了一下远程库中分支的名称(加了一个“GitHub”),点击Preview。

在push确认信息提示框内,我们可以确认我们的push分支信息,可以看到[new branch]的标识,代表是新的分支。点击Push。等待片刻后,就会收到一个提示信息。

最后,检查一下远程库中的分支是否多了一个名为“feature_push_new_branch_GitHub”新分支。

完美!؏؏☝ᖗ乛◡乛ᖘ☝؏؏

拉取远程分支

有推送就有拉取。我们假设已经在远程库存在了dev分支(在上图中我们也可以看到),这个时候我们检查一下本地是否有dev分支:

删除本地分支

在Git Repositories视图中我们可以看到本地全部的仓库信息,找到对应的仓库,Branches>Local

如图可以很清晰的看到,我们的当前分支时feature_push_new_branch上,且已经存在了dev分支(实际上我就是用dev分支练习了将分支push到远程新分支的功能),接下来,我们先删除这个dev分支,然后我们再尝试从GitHub上取下dev分支。

右键需要删除的分支>Delete Branch ,注意当前分支是无法删除的,如果想删除当前分支,请先切换到其他分支上去。

删除结果如下:

可以看到dev分支已经被删除了。另外需要说明一下,如果被删除的分支有一些还没有来得及合并的修改,那么在删除的时候会弹出提示信息,让你再一次确认要删除的分支。

修改checked-out远程分支?!

还是在Git Repositories视图中,我们看到Remote Tracking中有一个名叫origin的远程库(不用怀疑,就是GitHub上对应的项目),它的下面有一个dev分支(如果没有,请尝试F5刷新一下Remote Tracking文件夹)

这里显示的dev分支的缩略信息未必是实时的,我尝试在远程dev分支上添加了一个readme文件,但是在此处刷新是无法显示这个最新操作的,但是通过checkout(分支上右键>Check Out)依然可以拿到最新的提交信息。如下图checkout的结果:

请注意,可以看到我们的当前分支已经从之前的feature_push_new_branch切换到了远程库的dev分支上。

但是如果此刻你直接修改checkout出的代码,是无法被本地Git仓库追踪到的,因为本地并没有对应的分支来追踪这些修改,而且远程库也不会记录你此刻的任何修改,即此刻的操作是无用的。

这点千万要注意,建议小伙伴尝试一下直接修改checkout出的远程分支,看看如果切换回了master分支上,还能不能再重新找回刚才在checkout出的远程分支dev上的任何修改,或者看看远程库上有没有任何变化被记录。

因此,如果希望修改远程的分支,必须修改本地分支然后再push,不可以直接修改checkout出的远程分支。

但是如果你忘记了这点,依然在checkout出的远程分支上做了一些修改并且已经commit了,你切换到了master分支上准备合并这些修改,突然,你发现找不到了这些修改怎么办?不知道小伙伴们是否还记得 git reflog指令?没错,reflog会记录下你的每次提交,所以,你可以去查看一下Git Reflog历史记录:

必须在Git Repositories视图,右键项目 > Show In > Git Reflog

找到你刚刚做的修改的commit,右键 > Checkout ,即检出了刚才的马虎修改:

拉取远程分支

那么如何将远程的分支拉取到本地的一个新的分支上呢?

右键远程分支 > Create Branch...

完成新建分支向导:

点击Finish 结果如下:

可以看到,我们已经将远程的dev分支下载(拉取)到了本地,且已经checkout,目前的工作区就是这个刚刚新建的与远程dev分支相关联的分支了,可以放心大胆的在这个分支上修改提交,Git仓库会一如既往地帮助我们跟踪它的变化。

总结

本章介绍了如何将新分支push到远程库,以及拉取远程的分支(或者可以称为在本地建立一个与远程某个分支相关联的新分支)。

另外还包括了一些其他的小操作,如:删除本地分支,修改了刚刚checkout的远程分支的解决办法。

其实对于普通开发者而言,拉取远程分支的操作可能会用得多一些,推送新分支到远程这个操作可能会影响服务器Git管理的混乱,因此一般都是由项目组长将新的分支push到远程去。

文章描述的过程尽可能详尽,配图尽可能详尽,并不是言简意赅的类型。

喜欢的朋友可以点赞分享,如有疑问,欢迎文末留言。

参考与感谢

《EGit/User Guide》

Git初学札记(六)————在远程新建本地Branch与在本地新建远程Branch相关推荐

  1. Git初学札记(七)————合并分支(merge)

    目录 引言 开始Merge 1.History视图 2.Team菜单 3.Git Repositories视图 巧用Git Staging视图 放弃Merging 可能的Merge结果 引言 Git鼓 ...

  2. Git初学札记(四)————Git Push的常规操作与Pull冲突解决

    目录 引言 Git命令行的远程Push EGit Push操作中的冲突问题 同步 工作区与本地库同步 工作区与远程库同步 图标 重点 引言 在团队开发当中,Git Push是多人协作环节中的最重要的一 ...

  3. Git初学札记(二)————EGit导入远程Git仓库项目(Clone操作)

    引言 我们在实际开发项目的时候,难免要使用像Eclipse或者IDEA这样的继承开发工具,除了部分"牙牙学语"的程序员需要手动输入javac去编译程序以外,在实际开发中手动编译并运 ...

  4. Git初学札记(九)————EGit检出远程分支

    引言 现在有这样一个使用场景:团队中的其他开发者提交了一个新的特性分支(如feature_1),要求我们一同开发,并将自己修改的代码也全部提交到这个分支上去.那么如何将这个分支检出,并将本地检出的分支 ...

  5. Git 初学札记(十)—— Reset 回退的三种状态解析

    引言 工作中经常会涉及到需要本地代码覆盖更新的操作.有时候可能是从远端git 上直接覆盖更新,或者是其他本地分支覆盖更新当前分支等等.这个时候就需要用到 reset 操作. reset 操作分为三种类 ...

  6. Git初学札记(零)————EGIT完成Eclipse到GitHub一条龙

    eclipse安装Egit插件 首先我们要找到所需的egit插件的url更新地址.百度一大堆,但是我还是希望自己去寻找. 打开Eclipse Downloads官网,在页面底部直接输入"eg ...

  7. Git初学札记(五)————Branch分支管理

    引言 正如之前的博客中提到的,Git区别于Svn的一个最明显的功能就是分支管理功能. 那么什么是分支?分支又能为我们的开发带来什么翻天覆地的变化呢?(为了使博客的内容更具权威性和专业性,以下部分内容摘 ...

  8. Git初学札记(三)————创建Git版本库

    引言 版本库即所谓的Git仓库,英文名称是Repository,可以简单理解为一个目录(.git folder),这个目录可以记录并保存直接父级及其子目录下的全部文本文件的修改操作,谓之"版 ...

  9. Git初学札记(一)————Git简介与安装

    前言 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.(在 ...

最新文章

  1. 阿里提出电商搜索全局排序方法,淘宝无线主搜GMV提升5%
  2. matlab的grayscale,Python 是否等效于Matlab函数“imfill”的grayscale??
  3. 关于Pac-Man,你所要了解的 一切
  4. ping得通外网,上得了QQ,游戏,却打不开网页。
  5. leetcode 561. 数组拆分 I(排序)
  6. Python hashlib模块中的sha加密
  7. solution: stuch on 'setting up your MAC'
  8. P1681 最大正方形II (动态规划)
  9. 第三季-第20课-多线程程序设计
  10. M1 mac 安装打印机驱动程序
  11. 基于java中国跳棋游戏
  12. Bluetooth Core Architecture Blocks----蓝牙核心架构
  13. Unity3d 周分享(17期 2019.5.18 )
  14. ZYNQ SDK开发调试踩坑指南
  15. SqlParameter[]写法
  16. Python: SQLAlchemy 处理 PostgreSQL on conflict
  17. 团队软件库_if 我是前端团队 Leader,怎么制定前端协作规范?
  18. 浮躁的社会,浮躁的我
  19. VB字符串中包含双引号处理
  20. BrainAGE作为大脑老化的神经影像标志物的十年

热门文章

  1. 算法复习第六章第七章
  2. mysql重要的监控参数_zabbix3.0.2使用percona mysql插件来监控mysql5.7   以及必须监控的性能参数...
  3. 可以直接考甲级吗_函授本科可以考四级吗
  4. linux修图,修图只知道Photoshop?11款高逼格修图工具快来get!
  5. java动态语言_探秘Java 7:JVM动态语言支持详解
  6. 小米9私密相册怎么找_“拼藏搜”,手机相册还能这么玩
  7. 一个form 如何做两次提交_如何做一个自信魅力的女人
  8. 图形驱动程序和显卡驱动什么区别_以后你的手机也需要单独安装显卡驱动程序了...
  9. java 项目启动初始化_Spring Boot解决项目启动时初始化资源的方法
  10. QQ浏览器怎么截取整个网页 QQ浏览器完整截取网页的方法