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



推荐阅读
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • Git核心命令全解析:掌握日常开发必备技能
    本文深入解析了 Git 的核心命令,帮助开发者掌握日常开发中的必备技能。从 `git init` 命令开始,介绍了如何将当前目录转变为 Git 可管理的仓库。接着详细讲解了 `git add` 命令的使用方法,包括如何将文件(如 `readme.txt`)添加到暂存区,以便在后续提交时进行版本控制。此外,还探讨了其他关键命令,如 `git commit` 和 `git push`,以确保代码变更能够安全地保存和同步到远程仓库。通过这些命令的综合应用,开发者可以更加高效地管理和协作项目。 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 如何在Linux环境中高效地创建、编译与运行C语言代码
    本文面向第一次在linux尝试写C语言程序的新人。有经验的请绕行。C语言用法不是本文介绍的关键,本文只是引入如何第一次在linux系统下编写、编译和执行一个简单的c程序。学会后请自行深入 ... [详细]
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社区 版权所有