git在idea中的冲突解决(非常重要)

1.什么是冲突

  冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致。读起来有点绕,结合下面的案例理解。

  从上面对冲突的定义来看,冲突时发生在同一个文件上的。

2.生产上冲突的场景

  常见冲突的生产场景如下

  1. 更新代码
  2. 提交代码
  3. 多个分支代码合并到一个分支时
  4. 多个分支向同一个远端分支推送代码时

  git的合并中产生冲突的具体情况:
  <1>两个开发者(分支中)修改了同一个文件(不管什么地方)
  <2>两个开发者(分支中)修改了同一个文件的名称
  注意:两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。

  总结:上面各种情况的本质都是,当前文件与合并文件不一致,因此不论哪种情况其解决冲突的方法是一样的。

3.idea中解决冲突

  模拟场景:

  假设有另个开发人员开发同一个项目,并且编写同一个文件,工作流程如下:

  1.01号程序员先上传文件conflict.txt,并继续在conflict.txt上写代码;

  

  2.02号程序员更新项目代码,并在conflict.txt上写代码,写完后,在提交到远程服务端;

  

  3.当01号程序员把写完后,准备提交代码了,这时的正规操作手法,先更新在提交,但是在更新的时候必然会冲突,因为这时候更新的代码conflict.txt与本地仓库代码conflict.txt不一致

  

  提交前,我要更新,冲突了:

  

  解决方案如下:

  accept yours:代表以自己的为准;

  accept theris:代表以更新下来的文件为准;

  merge:代表手动合并

  一般解决冲突我们都是选择merge

  

  将需要的内容点击:">>"既可以合并内容到result中,不需要的内容点击“x”即可,合并完成后点击apply即可。

  值得注意的是,最将所有的“x >>”符号都要处理完,不需要的点击“x”,需要的点击“>>”

  最后,不论是什么场景下产生的冲突解决方法是一样的。

4.关于冲突的个人心得

  多人协作开发的时候,如果出现了你没有改过的文件跟你冲突了,一定要去找到当事者,说清楚是如何冲突的;

  然后协商解决,千万不要擅自拉别的分支去试图解决冲突,或找文件覆盖,更或者以自己的文件为准.

  同时记住,解决了之后,要add 和 commit 最后push.为保证万无一失,最后在冲突都解决之后,重启项目;

  保证至少不会有立即奔溃的现象发生.然后才去提交,push.

  提交的时候,一定要保持清醒,先搞清楚自己要提交的文件之间的关系,然后再提交,这样才不会有文件缺失的问题,造成奔溃.

  如果任务比较多,又开了多个分支,分别进行开发,再次强调,一定要清楚自己在各个分支上做了什么,自己要提交的是什么.最好是能做个详细的笔记,没有把握宁愿不要去提交到生产服务器.

  提交代码的时候不要走神,因为这是一个神圣的时刻!

原文地址:https://www.cnblogs.com/newAndHui/p/10851807.html

时间: 2024-10-13 08:50:21

git在idea中的冲突解决(非常重要)的相关文章

[BetterExplained]亲密关系中的冲突解决

一般来说,解决冲突的办法是两人都不越界要求对方,尊重对方的意愿,但一旦双方皆认为自己合理,冲突却不可避免的时候,就必须各自退回到尊重对方的自由. 但其实这也不是问题的终极解决之道,因为这会导致一旦冲突发生,两人就退回到自己的领地,制造出冷战气氛来,“尊重对方”说起来容易,做起来着实没有那么容易. 这里有一个更好的方案,简言之就是两人都将双方看成一个利益共同体. 现实生活中人们其实很难将他人的利益真正放在心上,不过亲密关系中的人如果想最优化相处的话还必须得这么做,因为本身两人的利益就是一个整体.

eclipse中svn冲突解决

Eclipse中的svn冲突解决办法: 1. 点击提交,报错——‘SVN提交’has encountered a problem. 2. 选中无法提交的文件,点击更新操作.多出三个文件,分别是:“.mine”“r(xxx+1)”“r(xxx)”其中xxx为版本号.“.mine”是我要提交的文件,“.r(xxx)”是我是在这个版本文件基础上修改后产生冲突的.“r(xxx+1)”是目前svn服务器最新版本的内容是这样. 3. 我们通过手动处理源文件“.java”,得到自己真实想要上传到svn的文件后

.Net中DLL冲突解决 【转帖】

转自:http://www.cnblogs.com/HQFZ/p/5000038.html 最近在编译AKKA.net 时出现了一个问题: Newtonsoft.Json.dll 冲突. C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3243: No way to resolve conflict between " Newtonsoft.Js

.Net中DLL冲突解决(真假美猴王)

<西游记>中真假美猴王让人着实难以区分,但是我们熟知了其中的细节也不难把他们剥去表象分别出来.对问题不太关心的可以直接调到文中关于.Net文件版本的介绍 问题 最近在编译AKKA.net 时出现了一个问题:Newtonsoft.Json.dll 冲突. C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3243: No way to resolv

Git合并分支出现的冲突解决

人生不如意之事十有八九,合并分支往往也不是一帆风顺的. 我们准备新的分支newbranch. [email protected]V-PC MINGW32 /c/gitskill (master)$ git checkout -b newbranchSwitched to a new branch 'newbranch' 修改readme.txt,在最后一行添加: $ cat readme.txtmaster分支内容添加dev分支内容分支合并测试 在分支newbranch上提交: [email p

Git错误non-fast-forward后的冲突解决

当要push代码到git时,出现提示: error:failed to push some refs to ... Dealing with "non-fast-forward" errorsFrom time to time you may encounter this error while pushing: $ git push origin master To ../remote/ ! [rejected]        master -> master (non-fas

git服务器创建,冲突解决

1.git服务器创建 在公司多人协作开发的情况下,不能简单地使用github,因为github是互联网公开的,这种情况公司的代码的保密性就会丧失了.这种情况下,需要创建git服务器. 登录服务器,使用git init --bare xx.git创建空的git版本库,这个版本库比较特别,和tree不是一回事,在这个目录下也没法运行git命令. 之后在工作的机器上,clone此版本库. 多人clone以及pull.push就可以实现协同开发. 然后本地的操作方法就都和一般使用git一样了,只不过ip

git stash pop 冲突,git stash list 中的记录不会自动删除的解决方法

在使用git stash代码时,经常会碰到有冲突的情况,一旦出现冲突的话,系统会认为你的stash没有结束. 导致的结果是git stash list 中的列表依然存在,实际上代码已经pop出来了. 处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理. 1.解决文件中冲突的的部分, 打开冲突的文件,会看到类似如下的内容: git冲突内容 其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes

?git?-----协同开发,冲突解决 合并分支(项目中使用git)

使用基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4.拉取远程仓库(每一次要提交远程仓库前必须先拉) 5.如果出现冲突,线下沟通(协商重新开发冲突文件),要重新走3.4步 6.没有冲突,提交到远程仓库 """ 协同开发 """ 1)所有人在一个分支上进行开发 - 通常开发分支名为dev 2)遵循git开发流程:先提交本