UP | HOME

▼ 本文更新于 [2025-10-16 周四 15:17]

emacs-在Windows上使用majutsu管理git

想必使用Emacs的你,应该听说过Git。虽然功能强大且成为了现代社区开发的基石之一,但Git的使用难度着实不低。幸好,我们Emacs上有一个伟大的pcakage Magit ,可以极大程度提升Git使用幸福度。

然而在Windows上,Magit的性能相当差,根据有关讨论,主要是因为magit会运行大量 git 进程来收集所需信息,而Windows上创建进程的代价又相对较高。

时间来到了2025年,在Rewrite It In Rust的风潮中,许多经典的Linux工具被Rust重写,而Git也有一个以Rust编写的相似软件:Jujutsu。简单来说,jj能够管理Git的repo,采用了简化一点的设计思路,当然也有缺少的功能。不过最重要的是,在Windows上用Majutsu+Jujutsu比Magit+Git响应速度更快。

1. 配置Git、Jujutsu

Jujutsu需要和Git一起安装,在管理repo之后也会调用Git进行push/fetch等操作。

根据这篇帖子,Windows上的Git不能用scoop安装,需要下载Installer,并在安装的过程中勾选「使用外部 OpenSSH」。如果你不幸通过scoop安装了,请卸载并改用官方的安装包(否则你会发现jj无法push)。

Jujutsu可以通过scoop安装,直接 scoop install jj 就行了。

2. 配置majutsu

如果你用的emacs 30+ 的版本,可以用 use-package:vc 关键字直接从Github Repo安装Majutsu。

(use-package majutsu
  :vc (:url "https://github.com/0WD0/majutsu"
            :rev :newest)
  :bind
  (("C-x j" . majutsu-log)
   ("C-x C-j" . majutsu-log)))

不然的话,也可以用其他方式,或者手动下载相关文件。

3. 使用majutsu

C-x j 进入majutsu界面。jujutsu的思路和git不一样,取消了暂存区等功能,当前文件的状态是一个未命名的新HEAD,commit之后就会固定。

一个简单的工作流程是:

在当前repo里进行一些变更,等觉得应该保存当前状态了,就 C-x j 然后 c ,输入commit内容,生成一个commit。

如果想上传了,就 C-x j 然后将光标移动至想更新到的commit上,再 b s ,将 main 移动过来,最后 G p p 推送。

更详细的介绍,请看下面两个教程:

忙碌开发者的jujutsu教程

每个人的jujutsu教程

© Published by Emacs 31.0.50 (Org mode 9.8-pre) | RSS 评论