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

引言

本篇博客介绍将现有的本地分支以新的分支形式推送到远程库中,和以新的分支的形式从远程库中拉取一个分支。这两个功能都是比较简单的操作,但是在实际开发中,可能会在开发初期有所触及。比如我们希望将远程的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》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

目录 引言 开始Merge 1、History视图 2、Team菜单 3、Git Repositories视图 巧用Git Staging视图 放弃Merging 可能的Merge结果 引言 Git鼓励开发者使用分支来进行程序的开发。但是最终只会有一个版本发行出去,因此,我们需要将开发好的分支merg…

公钥,私钥和数字签名这样理解轻松入门!

公钥,私钥和数字签名这样理解轻松入门!参考博文:https://blog.csdn.net/21aspnet/article/details/7249401 (公钥和私钥是成对出现的,可以把他们看成锁头和钥匙的关系,公钥为锁头,私钥是钥匙&am…

Spring Boot + JSP

目录 引言 Maven依赖 JSP页面 application.properties配置 controller 结果展示 引言 在尝试使用shiro的时候需要页面登录的加持,但是长期的前后端分离工作,导致页面的知识几乎忘光。突然想通过jsp这种简单的形式来学习其他的技术,作为…

https和http的区别

https和http的区别一、基本概念(http服务器-->本地浏览器,正确快速传输;https安全套接字层,http的安全版本, httpssl层,建立一个信息安全的通道,保证数据传输的安全,确认网站的…

Markdown简明使用

#Markdown使用技巧 ##代码背景 可以使用反引号,来将特殊文字括起来,这样Markdown会自动为引号中的内容加入背景。 形如:内容 例如:Java project > team > share project ##图片上传 图片无法像正常的文本编辑器那样直接粘贴…

Spring Boot + Mybatis 快速整合

引言 最近在工作结束后抽时间学习了一下mybatis的知识,因为之前有学习过,但是经久不用,也未曾踏实地整理,因此有所淡忘。 super meeting会议管理系统是我厂最近开发的一套会议预约平台。持久层框架经讨论,选为灵活优…

SQL关联查询————LEFT JOIN关键字的使用

引言 关联查询一直是非常重要的SQL使用技巧。 在一次查询操作中&#xff0c;使用mybatis进行条件查询&#xff0c;在没有使用 LEFT JOIN 关键字的情况下是这样写的&#xff1a; <!-- 查找成员 --><select id"selectUsers" resultMap"selectUsers_Res…

Java知识点全面汇总

&#xfeff;&#xfeff; 相关概念 面向对象的三个特征 封装&#xff0c;继承&#xff0c;多态&#xff0c;这个应该是人人皆知&#xff0c;有时候也会加上抽象。 多态的好处 允许不同类对象对同一消息做出响应&#xff0c;即同一消息可以根据发送对象的不同而采用多种不…

Git初学札记(八)————版本回退

引言 不论是使用svn还是git&#xff0c;版本回退都是一个非常重要的功能。 EGit版本回退 在History视图中&#xff0c;我们可以看到我们的commit历史&#xff0c;选中任意一个commit版本&#xff0c;右键reset —>Hard &#xff0c;即可回退到指定版本。 注意&#xff0c…

Java实现用户头像上传(修改默认文件大小限制)

概述 每次说起文件上传&#xff0c;就不得不提一下前端的实现方式&#xff0c;说来也奇怪&#xff0c;本博主最热门的博客居然也是文件上传&#xff0c;3万多的访问量占了总访问量的一多半&#xff1a;《传统form表单提交方式的文件上传与文件存储》&#xff0c;而且&#xff…

垃圾回收机制和JVM垃圾回收常见算法

垃圾回收机制和JVM垃圾回收常见算法垃圾回收的好处和特点&#xff1a; 好处&#xff1a; 1. 提高编程效率&#xff1b; 2. 垃圾回收机制保护程序的完整性。特点&#xff1a; 1. 只能回收无用对象的内存空间&#xff0c;对其他物理资源无能为力&#xff1b; 2. 为了更快回收不再…

Java 多线程 —— 死锁与锁的错误用法

引言 死锁状态的大致情况是&#xff1a;Thread_1在获得A对象的锁后&#xff0c;紧接着去请求B对象的锁 &#xff0c;Thread_2在获得了B对象的锁后&#xff0c;紧接着又去请求A对象的锁&#xff0c;如下图&#xff1a; 一、模拟一个死锁 public class DeadLockDemo {static cl…

Java零基础并发编程入门

Java零基础并发编程入门并发编程主要包括&#xff1a; 线程&#xff0c;同步&#xff0c;future&#xff0c;锁&#xff0c;fork/join&#xff0c; volatile&#xff0c;信号量&#xff0c;cas&#xff08;原子性&#xff0c;可见性&#xff0c;顺序一致性&#xff09;&#xf…

Java内置锁——synchronized

一、给对象加把锁 synchronized关键字是Java唯一内置的互斥锁&#xff0c;通过关键字 synchronized 可以保证同一时刻只有一个线程获得某个同步代码块的执行权&#xff0c;但不会导致其他线程执行非同步方法时阻塞。 当获得锁的线程执行完同步代码块后&#xff0c;线程会将锁…

处理对象(toString()方法详解和==与equals方法的区别)

处理对象&#xff08;toString&#xff08;&#xff09;方法详解和与equals方法的区别&#xff09;toString&#xff08;&#xff09;是一个非常特殊的方法&#xff0c;它是一个自我描述的方法。当程序员直接打印该对象的时候&#xff0c;系统会输出该对象的“自我描述”的信息…

Java并发编程实战——volatile

引言 Java 语言提供了一种弱同步机制——volatile 变量。它的作用是确保将变量的更新操作通知到其他线程。 当把变量声明为volatile后&#xff0c;编译器和运行时都会注意到这个变量是共享的&#xff0c;因此不会将该变量上的操作与其他内存操作一起重排序。 另外&#xff0…

Java中类的加载顺序介绍(ClassLoader)

Java中类的加载顺序介绍(ClassLoader)1、ClassNotFoundExcetpion   我们在开发中&#xff0c;经常可以遇见java.lang.ClassNotFoundExcetpion这个异常&#xff0c;今天我就来总结一下这个问题。对于这个异常&#xff0c;它实质涉及到了java技术体系中的类加载。Java的类加载机…

UP装机部署步骤大纲

Linux装机 插上网线&#xff0c;然后&#xff0c;Ubuntu系统安装&#xff08;略&#xff09; 更改root密码 以装机时设置的用户登陆后&#xff0c;sudo修改root用户密码&#xff0c;然后退出&#xff0c;重新登录root。 $ sudo passwd root 下载并安装JDK $ java (根据提…

Java 多线程 —— wait 与 notify

引言 认识一下 Object 类中的两个和多线程有关的方法&#xff1a;wait 和 notify。 wait&#xff0c;当前线程进入 WAITING 状态&#xff0c;释放锁资源。 notify&#xff0c;唤醒等待中的线程&#xff0c;不释放锁资源。 一、使用 wait-notify 实现一个监控程序 实现一个…

重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源

重写equal()时为什么也得重写hashCode()之深度解读以及equal方法与hashCode方法渊源转载自&#xff1a;http://blog.csdn.net/javazejian/article/details/51348320 今天这篇文章我们打算来深度解读一下equal方法以及其关联方法hashCode()&#xff0c;我们准备从以下几点入手分…