热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

创业冲突的五种解决方法是_世界上最快最强的解决Gitmerge冲突的方法

有读者要我多介绍一些Emacs秘笈。坦白地讲,秘笈这类东西在我眼里就是乱力怪神。我受过国内最好的工程师教育。所以我坚信,藏在深山老林里,没

有读者要我多介绍一些Emacs秘笈。坦白地讲,秘笈这类东西在我眼里就是乱力怪神。我受过国内最好的工程师教育。所以我坚信,藏在深山老林里,没被受过正规工程师和科学家教育的专家们验证的秘笈,能起作用的概率为零。

但效果极佳,被专家熟知却被大多数用户忽视的高级技巧是存在的。神奇的黑魔法一直在那里,大多数人由于缺少训练,不能识别和利用这些魔法。

即使我反复强调和推销这些黑魔法,很多人听完还是”中士闻道,若存若亡“的样子。甚至有人认为我推销的魔法太简单。

下面我要介绍”世界上最快最强的解决Git merge冲突“的方法。此方法今早才在Emacs reddit社区发表,是我最新研究成果。其本质无非就是我教授的思想和方法的简单应用而已

本文就证明一下“最快”,“最强”(注意,我的证明是简洁的,如有疑问建议读我的教程 https://edu.51cto.com/sd/de7e7 )。所有技术细节在文末给出。

先论证最快,

Git - git-mergetool Documentation自带的命令行工具,运行后会自动使用用户指定的某个文本编辑器挨个打开需要解决冲突的文件。其他工具只会列出冲突文件,需要用户手动打开文件。一个自动,一个手动,速度区别就明显了。

如果用Vim作为其文本编辑器。Vim快如闪电的启动速度,以及Vim那套高效文本操作术,保证了Vim和mergetool的结合后速度是世界第一的。

现在我找到了一个方法,保证了Emacs作为mergetool的文本编辑器,在不损失Emacs文本文件操作能力的前提下启动速度和Vim一样。那么Emacs和Vim就是世界并列第一(注意我在Emacs里启用了Vim模拟器Evil)。

这个方法就是,Emacs只载入最关键的文本文件操作和子窗口操作相关的模块。所谓最关键的文本文件操作的思路和细节,我在教程和之前的文章强调过好多次了。一条简单的命令emacs -Q --eval "(setq startup-now t)" -l "~/.emacs.d/init.el" 就在启动Emacs前传入startup-now这个全局变量,当此变量已定义且为真时,只载入和文本文件操作术相关的配置。

技术很简单,核心思想”文本文件操作术最重要”我也教了几个月。效果就是merge的速度世界第一。把mergetool和emacs结合,丢弃无关模块全力优化速度的操作,据我所知没有其他Emacs专家实现过,论创新性也是世界第一了。

再论证最强,

Emacs自带的ediff模块功能就很强大,看一下其命令数量和代码行数就知道了。那么如果ediff那么强.为什么用的人不多呢?(ediff有一条危险而强大的命令ediff-revert-buffers-then-recompute-diffs,google搜索一下,几乎没人用,如果一个软件你只能搜到怎么安装启动,说明实际用的人不多)。

因为ediff的UI比较老旧,所有ediff的魔法命令必须在某个panel里启用。只能在panel里操作ediff命令,导致用户在panel和merged buffer间频繁切换。用起来不方便,所以用的人就少了。

这里我又要唠叨一下了,对于panel,sidebar等概念我深恶痛绝,我最推崇的就是只有文本编辑窗口。主要文本操作就用vim那套快捷键,其他所有操作都用leader键(自己搜索一下vim leader key)。这个思路从一开始我就在教程里强烈推荐了。那么照着这个思路推导下去,要改造ediff也很简单,就是所有操作在可文本编辑的merged buffer (Buffer C)里完成,其他ediff命令也要能在merge buffer里用leader键调用就行了。

有了思路,具体做法很简单了,调用select-window API临时把焦点移到panel里,执行ediff命令后焦点移回merged buffer就可以了 。本质也就3行代码。

这样最后的操作又演变成vim默认快捷键负责文本操作,其他操作一股脑都扔到leader开头的快捷键了。操作起来就是一个爽字。

顺便说一下,目前我没有查到其他Emacs专家有如此操作。

再结合Emacs其他文本文件操作命令,比如你要处理中文文档,可用拼音首字母搜索中文(陈斌:Emacs用拼音首字母模式跳转焦点和搜索目录) . 是不是很强大?

技术细节见,

Emacs is the best merge tool for Git

所有代码和配置都已加入我的emacs配置 https://github.com/redguardtoo/emacs.d。 开箱即用。我也提供了一个含有代码冲突的项目 https://github.com/redguardtoo/test-git-mergetool 供你练习

小结,

大道至简,现在我把这个道放在你眼前了。逻辑你承认是正确的。其意义我也证明给你看了。接下来就看你的行动了。上士闻道,勤而行之。

BTW,之前我对于教程 如何提高编程速度 - Emacs高手教授轻松精通所有编辑器和IDE的秘诀 思路是我以最短时间把关键技术和核心思想演练一遍。只要你真正掌握其本质,随意组合一下发明几个顶尖技巧是小菜一碟。现在我计划升级此课程,加入类似本文的应用学到思想和技巧表演黑魔法的章节,欢迎订阅我的课程。已订阅课程的老用户永远可以免费获得最新升级内容。



推荐阅读
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
author-avatar
醉后余欢0醒后亦欢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有