如何使用 Magit 管理 Git 项目

Emacs 的 Magit 扩展使 Git 版本控制入门变得容易。
173 位读者喜欢这篇文章。
Out of the trash and into the classroom

Opensource.com

Git 是一个出色的版本控制工具,用于管理项目,但对于新手来说可能很难学习。除非您熟悉标志和选项以及使用它们的适当情况,否则很难从 Git 命令行工作。这可能会令人沮丧,并导致人们陷入非常有限的用法。

幸运的是,当今大多数集成开发环境 (IDE) 都包含 Git 扩展,这使得使用 Git 变得容易得多。Emacs 中可用的一个这样的 Git 扩展名为 Magit

Magit 项目已经存在 10 年了,并将自己定义为“Emacs 内部的 Git porcelain”。换句话说,它是一个通过按键即可管理每个操作的界面。本文将引导您了解 Magit 界面,并解释如何使用它来管理 Git 项目。

如果您尚未安装,请安装 Emacs,然后在继续本教程之前安装 Magit

Magit 的界面

首先,在 Emacs 的 Dired 模式下访问项目目录。例如,我的所有 Emacs 配置都存储在 ~/.emacs.d/ 目录中,该目录由 Git 管理。

Use Dired mode to navigate a Git project

如果您从命令行工作,您将输入 git status 来查找项目的当前状态。Magit 具有类似的功能:magit-status。您可以使用 M-x magit-statusAlt+x magit-status 快捷键)调用此函数。您的结果将如下所示

Magit status popup window

Magit 显示的信息比您从 git status 命令中获得的要多得多。它显示了未跟踪文件、未暂存文件和已暂存文件的列表。它还显示了暂存列表和最近的提交——所有这些都在一个窗口中。

如果您想知道发生了什么变化,请使用 Tab 键。例如,如果我将光标移动到未暂存文件 custom_functions.org 上并按下 Tab 键,Magit 将显示更改

Use Tab key to view changes

这类似于使用命令 git diff custom_functions.org。暂存文件甚至更容易。只需将光标移动到文件上并按下 s 键。该文件将很快移动到已暂存文件列表

Use the key 's' to stage a file

要取消暂存文件,请使用 u 键。使用 su 比在命令行输入 git add -u <file>git reset HEAD <file> 更快更有趣。

提交更改

在同一个 Magit 窗口中,按下 c 键将显示一个提交窗口,该窗口提供诸如 --all(暂存所有文件)或 --signoff(向提交消息添加签名行)之类的标志。

Magit commit popup window

将光标移动到要启用签名标志的行,然后按 Enter 键。这将突出显示 --signoff 文本,这表示该标志已启用。

Enable signoff

再次按下 c 键将显示用于编写提交消息的窗口。

Magit commit message popup window

最后,使用 C-c C-c(Ctrl+cc 快捷键)提交更改。

Commit changes

推送更改

提交更改后,提交行将出现在“最近提交”部分。

The new commit will appear in the 'Recent commits' section

将光标放在该提交上,然后按 p 键以推送更改。

如果您想了解使用 Magit 的感觉,我已经在 YouTube 上上传了一个演示。我在本文中只是浅尝辄止。它有许多很酷的功能可以帮助您处理 Git 分支、变基等等。您可以从 Magit 的主页链接找到文档、支持等

标签
psachin
Sachin 热衷于自由和开源软件。他是 GNU Emacs 的狂热用户,喜欢谈论和撰写关于开源、GNU/Linux、Git 和 Python 的文章。他之前曾在 OpenStack、ManageIQ/CloudForms 和 Red Hat Insights 工作过。他还喜欢在业余时间探索 Swift 对象存储。可以通过 IRC 联系他,账号为 psachin@{Libera.Chat, Freenode, OFTC, gnome}。

2 条评论

感谢这篇文章,正是我目前需要的。顺便问一下,我们可以看看你的 ``init.el`` 文件吗?

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可发布。
© . All rights reserved.