热门标签 | 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的秘诀 思路是我以最短时间把关键技术和核心思想演练一遍。只要你真正掌握其本质,随意组合一下发明几个顶尖技巧是小菜一碟。现在我计划升级此课程,加入类似本文的应用学到思想和技巧表演黑魔法的章节,欢迎订阅我的课程。已订阅课程的老用户永远可以免费获得最新升级内容。



推荐阅读
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社区 版权所有