idea结合git使用和冲突问题的解决
前言
本文章是个人学习idea中git的使用做的学习总结,在开发中也许小伙伴们也会遇到同样的问题,希望这篇文章能够帮助小伙伴们更好的使用代码托管工具git来开发项目。
1.从git上拉取项目(默认你已经进行了登录的操作)
1.这个应该是个人经常用的方法,还可以close当前项目,重新选择的第三项也可以输入url
2.url就是远程库中已经创建好的项目,一般是以.git结尾的http协议路径
url比如在工蜂中是这样的
放入idea
3.这个时候你就可以看到idea左下角的git,和拉取下来的项目。
2.从master分支上创建新的分支 ,本地代码到远程仓库提交。
1.点击本地的master 创建新的分支分支名称叫dev_songjiahao(我们一般在自己的分支上完成自己的项目)这时注意到我们remote远程分支是没有dev_songjiahao的。local和remote的分支变化大家一定要多注意,就是一个本地和远程的分化,包括你提交项目要从远程更新一下的原因也是这个。(本地和远程的概念)<-多留意。
2.接下来就在代码上做修改了。
我们可以通过这个看到修改前后的对比
(1).修改后这里变蓝色
展开说一下颜色 你新建一个文件是红色,add后是绿色,我这里拉下的项目是蓝色,本是已经跟踪了的。我现在是加入,已提交(是出发点就是从远程拿下来的项目),有改动,没毛病。
绿色,已经加入控制暂未提交 红色,未加入版本控制 蓝色,加入,已提交,有改动 白色,加入,已提交,无改动 灰色:版本控制已忽略文件。
(2)git.add是一个多功能命令,根据目标文件的状态不同,此命令的效果也不同:
。(1)可以用它开始跟踪新文件
。(2)把已跟踪的文件放到暂存区
。(3)还能用于合并时把有冲突的文件标记为已解决状态等)。
在我下面这里就的操作把它放入缓存区的意思。
工作区——>缓存区——>本地——>远程 *给个来的图让大家看清楚这个路线和命令
(3) commit一下,打好备注,提交到了本地仓库
commit之后这里我的颜色变回白色,加入,已提交,无改动
(4)我们只在dev_songjiahap分支上进行了修改,我们push一下,本地推一下到远程
(5)选择你修改的文件,dev_songjiahao-->远程 origin包下的dev_songjiahao new (远程新分支)
我们观察一下变化
此时我们远程多了本地分支对应的远程新分支,完成了代码的提交。其实我已经完成了一圈的操作了你可以回过头看看这个图
3.项目中代码合并
合并到你想要的合并的分支,这里我展示一下如何合并到主分支。其他分支合并同理,但是主分支是要权限的,不然会乱套
3.1切换到想要合并的分支上去,这里我们切到主分支
3.2 合并代码到master主分支
我们点击merge 注意以下两点。
注意:
当前必须切换到master主分支
然后在要合并的分支上点击merge
这里在本地的你的两个分支合并了,会提示删除delete另一个分支dev_songjiahao。意思大概就是(我有5块钱你有10块,你把钱给我,你可以爬了)。
3.3 提交到远程仓库
先更新( 可能会有冲突) push提交到远程的master
显示提交成功
4.造成的冲突如何解决。(非常重要)
4.1 冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致
4.2生产上冲突的场景
-
更新代码
-
提交代码
-
多个分支代码合并到一个分支时
-
多个分支向同一个远端分支推送代码时
我现在做的项目是团队中每一个人都在自己的分支上开发自己的一个模块(所以遇到的冲突应该是不高的),或则两个人开发在一个模块。个人模块开发这里冲突主要来源父目录的pom文件,一些配置文件上的冲突,两两合并到主分支上去,也会有两个人在同一个模块包下开发,这样两个人在合并的时候一定会有冲突,接下来我演示一下两个人开发同一个模块的代码合并是产生的冲突以及处理。
4.3两个人开发同一个模块的代码合并是产生的冲突以及处理
首先我从主分支上创建了两个分支对同一个文件进行的修改提交,然后开始进行合并
这时必定会出现分支合并的冲突
左边是dev_sjh 的第一次修改 中间是合并后的结果 右边是dev第一次修改
将需要的内容点击:">>"既可以合并内容到result中,不需要的内容点击“x”即可, 合并完成后点击 apply即可。值得注意的是,最将所有的“x >>”符号都要处理完,不需要的点击“x”,需要的点击“>>”
最后,不论是什么场景下产生的冲突解决方法是一样的。
5.版本回退功能(慎用)
6.分支的命名规范
1 master 主分支
对应线上(正式环境)的代码,一旦版本上线由测试人员发送合并matser邮件,开发人员将对应上线tag版本合并至master分支。
2 release 主分支
同 master 分支,预发环境通过之后,上线之前,合并 release 分支。
3 dev-* 辅助分支
从 master 拉取,用于新需求(版本)开发
*号为版本号+期次号
4 bugfix-* 辅助分支
从 master 拉取,用于快速修复线上Bug
*号为bug英文简称+期次号
.5 release-* 辅助分支
7.冲突的心得
项目中不要在主分支合并项目,尽量在自己分支开发,合并的时候一定要小心,多学习git的使用流程,当自己的分支和其他人和分支的时候,如果产生冲突了一定要和搭档协商再去apply,建议花点时间在git上,这可以为以后的开发节省很多不必要的麻烦,尤其是新手更加要小心翼翼,再次强调合并,有冲突的时候一定要找队友协商。