面向产品经理的Emacs教程:13. 通过Emacs来做版本管理

· 1182字 · 3分钟

1 课程回顾 🔗

通过上节课,我们学习了如何通过Org mode的capture特性来快速记录灵感、笔记,我们学习了如何通过denote来系统化地构建个人知识体系,如何通过 org-super-links 来做笔记之间的链接,如何通过 consult-notes 来查找我们需要的笔记。我们可以从现在做起,搭建起自己的笔记体系,坚持下去,你就会发现,它会成为你的财富!

本节课,我们来学习一下如何通过Emacs来做版本管理。

2 magit版本管理 🔗

通过Emacs来做版本管理,绕不开的一个插件是 magit ,我个人认为它是Emacs里的另一个杀手级应用!我们先来安装和配置它:

(use-package magit
  :ensure t
  :hook (git-commit-mode . flyspell-mode)
  :bind (("C-x g"   . magit-status)
         ("C-x M-g" . magit-dispatch)
         ("C-c M-g" . magit-file-dispatch))
  :custom
  (magit-diff-refine-hunk t)
  (magit-ediff-dwim-show-on-hunks t))

我们在什么情况下会需要用到版本管理呢?

  • 我们可以通过git来管理我们的配置文件,并上传到github上
  • 我们可以通过git来管理我们的笔记
  • 我们可以通过git来管理我们的项目

当我们安装完 magit 后,我们只需要简单的按下 C-x g 来激活它就可以了。这里分成两种情形,一种是还没有 git init 的文件夹,它会让你指定一个 Git repository 的位置;另一种是是当前的文件,已经在命令行通过 git init 进行过版本管理了,此时,我们可以直接看到相关的版本管理信息;

图1 还没有进行过版本管理的文件使用magit

图1  还没有进行过版本管理的文件使用magit

图2 已经有版本管理的文件使用magit

图2  已经有版本管理的文件使用magit

在这个界面,我们可以按下 ? 来显示有哪些快捷键和对应的git指令:

我们可以按下 sStage 我们修改的文件,我们然后可以按 cCommit 我们修改的内容,然后我们可以按 P 来将改动推送到远程仓库。整个过程都可以在Emacs里,通过一个字母的快捷键,通过可视化的方式来进行,让我们完全不需要在命令行去敲 git add, git commit, git push 等命令,非常方便。

我们在这一节课后,将完全使用 magit 来进行配置文件的版本管理。

magit 的官方手册:https://magit.vc/manual/

3 高亮显示修改的部分 🔗

diff-hl 插件可以在左侧高亮显示相对于远程仓库的修改部分。

(use-package diff-hl
  :ensure t
  :hook ((dired-mode         . diff-hl-dired-mode-unless-remote)
         (magit-pre-refresh  . diff-hl-magit-pre-refresh)
         (magit-post-refresh . diff-hl-magit-post-refresh))
  :init
  (global-diff-hl-mode t)
  :config
  ;; When Emacs runs in terminal, show the indicators in margin instead.
  (unless (display-graphic-p)
    (diff-hl-margin-mode)))

我们安装完这个插件后,就可以看到在当前文件,相对于远程仓库的修改部分,在Emacs最左侧有一个色条来展示,非常方便:

4 magit-delta增强git diff 🔗

magit-delta 插件可以通过 git-delta 来更优化的方式显示diff内容(需要提前安装 brew install git-delta )。

(use-package magit-delta
  :ensure t
  :hook (magit-mode . magit-delta-mode)
  :config
  (setq magit-delta-hide-plus-minus-markers nil)
  )

当我们安装配置完 magit-delta 后,我们查看文件修改的内容将更加美观:

5 结语 🔗

经过今天的学习,我们了解了如何通过Emacs做版本管理,产品经理使用 magit 没有那么重度,基本上今天讲的这些内容能够覆盖大多数工作中的需要。后续我们可以根据自己的实际情况,不断的挖掘 magit 的使用方法,优化我们的工作流,提升我们的工作效率。

这节课的配置文件的快照见:emacs-config-l13.org

你也可以在 这里 查看最新的配置文件。