idea git 代码冲突中的git怎么解决冲突

解决 Git 冲突的 14 个建议和工具 - 文章 - 伯乐在线
& 解决 Git 冲突的 14 个建议和工具
Git 非常善于合并代码。代码的合并在本地完成,快速而且灵活。正常情况下每次从不同分支合并内容时,冲突有可能会发生。通常解决冲突很简单,就如同知道(如何)选择(保留)重要的更改一样,而有时解决冲突则需要额外的工作。
每个开发者对于解决冲突有不同的偏好。不久前,一位叫丹·史蒂文斯的同事用内部软件
询问了大家是如何做的。
收集到的回答和看法比 Atlassian 之墙有更大的吸引力。下面是我们用多种方式解决 Git 冲突的详尽描述,希望它能提供一些可以去尝试的想法,并且融入到你日常编程习惯中。
( Atlassian 之墙是指 Atlassian 公司让客户将意见和反馈贴在墙上,可以参考,译者注)
通用设置建议
为了设置 Git 使其能正确合并,我们先开始做一些简单的配置。
1. 设置建议
当遇到冲突时,可以在命令行或者其他可视化工具中输入“git mergetool”来初始化合并活动。在“.gitconfig”中用“merge.tool”变量来设置 Git 中自己喜欢的冲突解决软件,比如用
的可能会这样填写”.gitconfig” 的 merge 部分:
tool="kdiff3"
<div class="crayon-num" data-line="crayon-58ffc<div class="crayon-num crayon-striped-num" data-line="crayon-58ffc
[merge]tool="kdiff3"
上面的语句等价于在命令行输入以下命令:
git config --global merge.tool kdiff3
git config --global merge.tool kdiff3
2. 在冲突标记中显示(分支)共同的祖先
用下面的设置来改进冲突标记使其也显示(分支)共同祖先(感谢罗宾·斯托克和休·吉登斯):
git config --global merge.conflictstyle diff3
git config --global merge.conflictstyle diff3
这个设置命令新添加一部分标记||||||| 从而给冲突加了注释,这样可以看到冲突行在有问题的两个分支的共同祖先处是什么状态。
3. 合并时使用“耐心”算法
如果文件内容很长(比如一个 XML文件)、冲突很多或者两个版本很不一致时,试着用下面的命令再次合并:
git merge --strategy-option=patience
git merge --strategy-option=patience
“耐心”算法的结果应该可以更好地协调一些函数中或者标记中没有配对的括号,具体算法细节可以参考
上的一个回答。
除非使用像
一样的可视化工具来弄清到底对一个文件做过什么,不然你可以使用:
git log --merge --decorate --source -p path/to/file/you/care/about
git log --merge --decorate --source -p path/to/file/you/care/about
手动解决冲突
处理合并问题主要有两类做法:有些开发者喜欢偏底层处理,因而手工操作处理冲突标记,而有些则偏好可视化工具来辅助(解决冲突)。两种方式都能极其有效地解决冲突。
5. 处理过程示例
有几个同事分享了他们手动处理的过程,比如詹森·欣奇描述了他的处理流程:
从手头的合并开始:
git merge the/other/branch
git status
git merge the/other/branchgit status
看下有多少文件冲突。
对每个冲突文件:
在编辑器中打开文件(比如 IntelliJ 或 Vim )
看看每个被冲突标记(“&&&&”和“&&&&”)围绕的区块。
看看(被冲突标记的区块)是否有意义,每个作者的意图是什么,如果能弄清楚就解决掉。
如果冲突标记无法理解,通常是这些文件改动很大,运行下面的命令:
git diff HEAD...the/other/branch -- path/to/conflicting/file
git diff the/other/branch...HEAD -- path/to/conflicting/file
git diff HEAD...the/other/branch -- path/to/conflicting/filegit diff the/other/branch...HEAD -- path/to/conflicting/file
这样做是为了看哪边改动较小
通常下面的命令:
git log -p HEAD..the/other/branch -- path/to/conflicting/file
git log -p the/other/branch..HEAD -- path/to/conflicting/file
git log -p HEAD..the/other/branch -- path/to/conflicting/filegit log -p the/other/branch..HEAD -- path/to/conflicting/file
能帮助理解另一边改动了什么。
回溯文件到改动最大的一边:
git checkout the/other/branch -- path/to/conflicting/file
git checkout the/other/branch -- path/to/conflicting/file
(在这里你也可以用 git checkout --theirs 或者 --ours )
手动检查并且再重新应用从另一边对文件的更改:
git add path/to/conflicting/file
git add path/to/conflicting/file
当这些更改都修复之后要构建整个项目,确保至少可以编译通过,如果测试可以很快运行起来,也要运行一下这些测试:
git commit
git commit
这个过程看起来有点太手工化了,但詹森发现对于他的工作流程来说会更少产生不合理的合并。
想看一步步手动解决冲突的基本视频,可以参看我们最近的
合并工具的天堂
有很多不同的可视化工具来操作复杂的合并和解决冲突。我的同事们提到了一些(并不是所有):
6. IntelliJ IDEA 冲突解决工具
IntelliJ IDEA 是很多 Atlassian 工作人员使用的 IDE 。很多人使用它内建的冲突解决工具来处理冲突,它提供了三个面板来分析:本地、远程和合并结果:
是 KDE 产品系列的一部分,并且在我们内部调查时提到过几次。
8. P4Merge
的作者斯蒂夫·斯特里廷和其他几个同事使用 P4Merge 来执行合并操作。 是免费的可视化工具,它具有四个面板而不是其他工具提供的三个,显示了&#8221;base&#8220;、&#8221;local&#8220;、&#8221;remote&#8220;和&#8221;merge result&#8220;。
是用 GTK+ 和 Python 开发的,也是已经存在了很久的工具,被提到了几次。
10. tig for status + diff
更多喜欢终端的人使用
(我们之前写过
的一篇介绍),再加上 “ git diff ”。
11. OS X 下的 FileMerge 即 opendiff
在长长的建议列表里,有几个开发者提到了 OS X 下原生的“opendiff”工具,或者叫做“FileMerge”。
12. diffmerge
我并不知道
这个工具,不过在列表里也被提到了。
13. Araxis Merge (商业版)
这个名字让我想起了很久以前。那时,我在一台 Windows 机器上一堆让人抓狂的 XML 文件中垂死挣扎,而这个工具证明了它可以经受住这个挑战。它是个商业软件。
14. vimdiff3
有几个同事用
来解决冲突,那是 vim 自带的合并/差异分析 工具,你可以这样设置:
git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false
git config merge.tool vimdiffgit config merge.conflictstyle diff3git config mergetool.prompt false
或者按照上面展示的那样直接修改 .gitconfig 文件。
你是如何解决冲突的呢?流程是怎样?你还使用过其他除了上文中提到以外的工具吗?让我们知晓你的技能吧,通过
联系我或者
我那很棒的团队。
关于作者:
可能感兴趣的话题
差不多都用过
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选文章
&#8211; UI,网页,交互和用户体验
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2017 伯乐在线intellij,在,idea,中为什么操做git_电脑数码_问题收藏百科
intellij,在,idea,中为什么操做git
编辑: 问题收藏百科 &&&来源:用户发表&&&发布时间:&&&点击次数:33
能帮我下?intellij了解,在,idea,中为什么操做git?谢咯。
【知识探讨】
如何在IDEA中使用Git
要使用GitHub,首先你需要下载一个Github这里使用的是for Windows (我的系统是win 8.1) 然后安装完成会得到如下的一个目录: 在Idea 里面做相关配置: 打开设置面板(Ctrl+Alt+S),点击左边功能面板列表中的Version Control(版本控制)在这里有许多...
如何在IntelliJIDEA上添加GIT和Maven,mybatis插件
看你的mysql当前默认的存储引擎: mysql& show variables like ’%storage_engine%’; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql& show create table 表名;
如何在IntelliJIDEA上添加GIT和Maven,mybatis插件
第一步,先把explored 加进去,然后启动tomcat,他会提示找不到。第二步,再点击就会成功发布部署的。
如何在IntelliJIDEA上添加GIT和Maven,mybatis插件
IntelliJ IDEA工具上,添加GIT和maven、mybatis插件,相对比较简单: 首先下载GIT、maven、mybatis。 先添加GIT插件: 首先在IDEA找到file中找到setting,然后搜索git,接着将git存放的路径找到即可。 接着是maven插件,也是很简单,打开setting...
如何在IntelliJIDEA上添加GIT和Maven,mybatis插件
下载mybatis的插件 直接放在idea的安装目录下边的config\plugins 比如 C:\Users\Administrator\.IntelliJIdea*\config\plugins 就ok了 希望能帮到你 谢谢
电脑数码相关
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&17:05 提问
IDEA中git在fetch,pull,clone等操作时出问题了
任何操作都会出现以下提示
点击yes就会要求输入密码
之前都是好好的,今天突然就这样了,求大神!
按赞数排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!解决IntelliJ中Git不能Commit and Push问题 - agile_boy - ITeye技术网站
博客分类:
& IntelliJ的Git插件还是不错的,而且已经集成到了开源版本中,但是如果你的Git如果有一个Repository Center,那你是要经常执行Git的push/pull的。
& 在InetelliJ中,默认打开的Git工程,是不能够Commit And Push的,要解决需要手工设置一下Branch,右键你的module: Git =& Current Branch,选择相应的Tracked Branch,就OK了。
浏览: 379259 次
来自: 上海
谢谢,出现这个异常,看来这个贴才发现site-packages ...
这样过度比较方便。但如果原来的项目,有几十个依赖的jar包,是 ...
博文看不清呀楼主,怎么解决的?我也遇到了
这种方法对FF浏览器,有效吗?
老大也有粗心的时候啊!16:03 提问
idea中git更新提交代码的问题
现在我不能pull代码了 , 有冲突的代码 我点取消是因为我想保留自己本地的代码,请问我要怎么解决这个问题啊?
按赞数排序
这个时候你可以把你本地的代码先stash起来,然后再pull,然后进行merge合并等。
其他相似问题}

我要回帖

更多关于 idea svn冲突怎么解决 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信