在IDEA中实战Git

工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:

假设小组中有两个人,组长小张,组员小袁

场景一:小张创建项目并提交到远程Git仓库

场景二:小袁从远程Git仓库上获取项目源码

场景三:小袁修改了部分源码,提交到远程仓库

场景四:小张从远程仓库获取小袁的提交

场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发

场景六:小袁把分支提交到远程Git仓库

场景七:小张获取小袁提交的分支

场景八:小张把分支合并到主干

 

下面来看以上各场景在IDEA中对应的操作。

场景一:小张创建项目并提交到远程Git仓库

创建好项目,选择VCS - > Import into Version Control -> Create Git Repository

接下来指定本地仓库的位置,按个人习惯指定即可,例如这里选择了项目源代码同目录

点击OK后创建完成本地仓库,注意,这里仅仅是本地的。下面把项目源码添加到本地仓库。

下图是Git与提交有关的三个命令对应的操作,Add命令是把文件从IDE的工作目录添加到本地仓库的stage区,Commit命令把stage区的暂存文件提交到当前分支的仓库,并清空stage区。Push命令把本地仓库的提交同步到远程仓库。

IDEA中对操作做了一定的简化,Commit和Push可以在一步中完成。

具体操作,在项目上点击右键,选择Git菜单

因为是第一次提交,Push前需要指定远程仓库的地址。如下图,点击Define remote后,在弹出的窗口中输入远程仓库地址。

场景二:小袁从远程Git仓库上获取项目源码

即克隆项目,操作如下:

输入小张Push时填写的远程仓库地址

接下来按向导操作,即可把项目从远程仓库克隆到本地仓库和IDE工作区。

场景三:小袁修改了部分源码,提交到远程仓库

这个操作和首次提交的流程基本一致,分别是 Add -> Commit -> Push。请参考场景一

场景四:小张从远程仓库获取小袁的提交

获取更新有两个命令:Fetch和Pull,Fetch是从远程仓库下载文件到本地的origin/master,然后可以手动对比修改决定是否合并到本地的master库。Push则是直接下载并合并。如果各成员在工作中都执行修改前先更新的规范,则可以直接使用Pull方式以简化操作。

场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发

建分支也是一个常用的操作,例如临时修改bug、开发不确定是否加入的功能等,都可以创建一个分支,再等待合适的时机合并到主干。

创建流程如下:

选择New Branch并输入一个分支的名称

创建完成后注意IDEA的右下角,如下图,Git: wangpangzi_branch表示已经自动切换到wangpangzi_branch分支,当前工作在这个分支上。

点击后弹出一个小窗口,在Local Branches中有其他可用的本地分支选项,点击后选择Checkout即可切换当前工作的分支。

如下图,点击Checkout

注意,这里创建的分支仅仅在本地仓库,如果想让组长小张获取到这个分支,还需要提交到远程仓库。

场景六:小袁把分支提交到远程Git仓库

切换到新建的分支,使用Push功能

场景七:小张获取小袁提交的分支

使用Pull功能打开更新窗口,点击Remote栏后面的刷新按钮,会在Branches to merge栏中刷新出新的分支。这里并不想做合并,所以不要选中任何分支,直接点击Pull按钮完成操作。

更新后,再点击右下角,可以看到在Remote Branches区已经有了新的分支,点击后在弹出的子菜单中选择Checkout as new local branch,在本地仓库中创建该分支。完成后在Local Branches区也会出现该分支的选项,可以按上面的方法,点击后选择Checkout切换。

场景八:小张把分支合并到主干

新功能开发完成,体验很好,项目组决定把该功能合并到主干上。

切换到master分支,选择Merge Changes

选择要合并的分支,点击Merge完成

 

 

版权声明:欢迎转载, 转载请保留原文链接。 https://blog.csdn.net/autfish/article/details/52513465

转载于:https://www.cnblogs.com/Mick-mod/p/8820952.html

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

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

相关文章

java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。

求教JAVA里面的错误我都已经看傻了。我思路是想创建个新对象(经理)并打印他的所有属性,外加上work一个干活的属性。自己看了半天改了半天都不行跪求高手给我改改并讲讲。abstractcl...求教JAVA里面的错误我都已经看傻了。我思路是想创建个新对象(经理)并打印他的所有…

从迁移到Java 7的小技巧

经过几年的努力,我们终于开始在软件级别方面将我们的应用程序从黑暗时代中拉出来,其中一个步骤是将我们的Java版本升级到Java7。在大多数情况下,这相当轻松,但是有一些惊喜: 当我们切换到Java 7时,已经运行…

css 宽高自适应的div 元素 如何居中 垂直居中

在我们 编写css 样式的时候经常会遇见一个问题 那就是一个 宽高未知的元素 要让他 垂直居中如何实现这个呢 下面是我常用的两种方法 上代码 下面的是 结构代码 <div class"wrap">//此处为父组件 我们会设置父级的宽高并让其居中 <div class"center&q…

iOS 图文并茂的带你了解深拷贝与浅拷贝

一、概念与总结 1、浅拷贝 浅拷贝就是对内存地址的复制&#xff0c;让目标对象指针和源对象指向同一片内存空间&#xff0c;当内存销毁的时候&#xff0c;指向这片内存的几个指针需要重新定义才可以使用&#xff0c;要不然会成为野指针。 浅拷贝就是拷贝指向原来对象的指针&…

使用Byteman和JUnit进行故障注入

我们的应用程序独立存在的时间已经很久了。 如今&#xff0c;应用程序是一种非常复杂的野兽&#xff0c;它们使用无数的API和协议相互通信&#xff0c;将数据存储在传统或NoSQL数据库中&#xff0c;通过网络发送消息和事件……例如&#xff0c;如果考虑到数据库&#xff0c;您会…

Ambari Views的自定义

下载ambari源码&#xff0c; ambari-views/examples/ 下面有很多例子&#xff0c;直接编译是不会成功的&#xff0c; 因为每一个例子项目都需要一个依赖 <dependency><groupId>org.apache.ambari</groupId><artifactId>ambari-views</artifactId>…

angular使用sass的scss语法

一、现象 为了简写样式 二、解决 1、安装sass ,利用npm 安装(npm工具如果没有&#xff0c;请先自行安装好) &#xff08;1&#xff09;、npm install node-sass --save-dev &#xff08;2&#xff09;、npm install sass-loader --save-dev 2、修改.angular-cli.json文件 …

linux 查看java cpu_Linux查看CPU和内存使用情况

在系统维护的过程中&#xff0c;随时可能有需要查看 CPU 使用率&#xff0c;并根据相应信息分析系统状况的需要。在 CentOS 中&#xff0c;可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后&#xff0c;CPU 使用状态会以全屏的方式显示&#xff0c;并且会处在对话的模式…

TCP浅谈为什么3次握手

《计算机网络》中的例子是这样的&#xff0c;“已失效的连接请求报文段”的产生在这样一种情况&#xff1a;客户发出的第一个连接请求报文段并没有丢失&#xff0c;而是在某个网络结点长时间的滞留了&#xff0c;以致延误到连接释放以后的某个时间才到达服务。 本来这是一个早已…

Arrays.sort与Arrays.parallelSort

我们都使用Arrays.sort对对象和原始数组进行排序。 该API在下面使用合并排序或Tim排序对内容进行排序&#xff0c;如下所示&#xff1a; public static void sort(Object[] a) {if (LegacyMergeSort.userRequested)legacyMergeSort(a);elseComparableTimSort.sort(a); }即使合…

了解ASP.NET MVC的基本架构

MVC&#xff0c;Model – View – Controller 的简写 Model 封装业务逻辑相关的数据及对数据的处理方法 View 向用户提供交互界面 Controller 负责控制Model和View 首先建立一个模板 在这里发现了一个问题&#xff08;好像vs12没有模板&#xff0c;建不出来&#xff09; 其…

Google Chrome 浏览器JS无法更新解决办法

JS无法更新原因&#xff1a; 浏览器为了加载快&#xff0c;默认是按照自定规则更新缓存&#xff0c;非实时更新。 我们在开发的时候&#xff0c;JS变动很快&#xff0c;需要即时让浏览器加载最新文件&#xff0c;也就是禁用浏览器缓存 &#xff08;1&#xff09;使用F12进入…

HDU3415 Max Sum of Max-K-sub-sequence

题意given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left neighbour of A[1] is A[n] , and the right neighbour of A[n] is A[1]. Now your job is to calculate the max sum of a Max-K-sub-sequence. Max-K-sub-sequence means a continuou…

Spring:自动接线或不自动接线

从使用Spring 2.5开始&#xff0c;我从基于XML的应用程序上下文切换到了注释。 尽管我发现那些非常有用且节省大量时间的人&#xff0c;但我始终觉得在灵活性方面我失去了一些东西。 特别是Autowired批注-或标准Inject-在我看来就像新的“新”&#xff0c;增加了类之间的耦合&a…

刷题总结——Cut the Sequence(POJ 3017 dp+单调队列+set)

题目&#xff1a; Description Given an integer sequence { an } of length N, you are to cut the sequence into several parts every one of which is a consecutive subsequence of the original sequence. Every part must satisfy that the sum of the integers in the …

java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...

软件模块之间总是存在着一定的接口&#xff0c;从调用方式上&#xff0c;可以把他们分为三类&#xff1a;同步调用、回调和异步调用。同步调用是一种阻塞式调用&#xff0c;调用方要等待对方执行完毕才返回&#xff0c;它是一种单向调用&#xff1b;回调是一种双向调用模式&…

CSS盒子的浮动

在标准流中&#xff0c;一个块级元素在水平方向会自动伸展&#xff0c;直到包含它的元素的边界&#xff1b;而在竖直方向和兄弟元素依次排列&#xff0c;不能并排。使用“浮动”方式后&#xff0c;块级元素的表现就会有所不同。 CSS中有一个float属性&#xff0c;默认为no…

servlet中url-pattern之/与/*的区别

转载于:https://www.cnblogs.com/hwgok/p/8835350.html

很少使用“ ControlFlowException”

控制流是命令式编程的“遗留物”&#xff0c;它已泄漏到其他各种编程范例中&#xff0c;包括Java的面向对象范例 。 除了有用的和无处不在的分支和循环结构外&#xff0c;还包括原语&#xff08;例如GOTO&#xff09;和非局部变量&#xff08;例如异常&#xff09;。 让我们仔细…

java的if里有多个if_代码里写很多if会影响效率吗?

看你怎么写 if.嵌入很多层if的代码叫做“箭头代码”&#xff0c;是一个anti-pattern。 这种代码会增加程序的循环复杂度 (Cyclomatic complexity)具体可以看这里&#xff1a;Flattening Arrow Code这里&#xff1a;总的来说&#xff0c;程序里用if-else是有开销的。每次conditi…