Magit的基本使用
Magit 的基本介绍
Magit是在emacs中对git的一种扩展, 它的本质是在emacs中, 利用emacs的方式调用git的命令, 使得git的使用更加地emacs化. 本人的emacs 能力有限, 因此只介绍magit中的一些最常用的命令, 方便日常使用够用即可. 要更加全面地研究可以看它的原网站.
Magit的基本介绍
打开Magit窗口:
使用Emacs打开任一由git管理的文件, 再使用快捷键 C-x g (M-x magit-status) 即可打开.
基本上第一次需要使用M-x magit-status打开, 后面才能用C-x g快捷键, 不知道是不是什么bug.
打开后会有一个窗口(这里我事先建好了一个 git 仓库)
分析下magit 窗口每部分的意思:
- Head: 当前HEAD指向
- Untracked files: 未追踪的文件 (也就是没使用 git add 命令添加的文件)
- Unstaged changes: 由git管理, 进行了修改, 但未添加到暂存区的文件
- Recent commits: 最近的提交记录, 第一列就是提交ID
如果常使用git, 以上解释应该一遍就能记住
常用的一些快捷键
-
g & G: g可以刷新当前buffer, G刷新全部buffer. 什么意思呢, 比如当前你在查看magit面板, 但是突发奇想往工程里添加了个文件, 这时magit面板的Untracked files里应该要多一个刚添加的文件的, 但是并没有, 此时需要按一下g, 这时这个新加的文件就会出现然Untracked files里了.
-
TAB: 折叠, 即如果光标在Untracked files这一行, 按TAB, 即可将UnTracked files这个小节给折叠起来, 工程文件多的时候这个功能十分管用. 下面是将Recent commits折叠后的结果.
-
C-p, C-n & M-p, M-n: C-p和C-n是上下移动, 与emacs移动相同. M-p和M-n是同级上下移动. 比如上面这个图, 如果光标在file这一行, 按M-n则会移动到new这一行, 如果光标在Untracked files这一行, 按M-n则会移动到Unstaged changes这一行.
-
d d: 查看diff, 将text.txt文件中的内容修改, 并将光标移动到Unstaged changes中的 modified text.txt 这一行, 按两下d, 即可弹出 diff 相关内容, 弹窗如下:
这个弹窗分两部分, Unstaged changes部分是文件名以及其修改的总结. 它的下面是针对每个文件高亮修改的内容.
可以清楚地看到改支的行以及改动的内容: 红删除, 蓝为添加行, 标红内容为删除内容, 标蓝内容为添加内容.
一开始看可能有些不习惯, 但习惯后这个功能十分有用.
此外, 如果在某一个提交行按 d d, 则会显示本次提交与前一次提交的diff
-
s & u: s可将文件添加到暂存区, u可将文件移出暂存区. 比如光标调整到new这个文件上, 按s后结果为:
可以看到new这个文件从Untracked files移到了staged changes这个小节下.
翻译成git的话就是 使用了 git add new 这个命令.
-
q: 退出当前buffer.
-
Enter: 到处都能用, 一个很好用的地方是, 在查看diff时, 在某一行按Enter, 它会直接跳到这个文件的这一行供你修改.
-
c: 提交弹窗, 如下:
此时按c, 即Commit (git commit -m), (通常直接按两下c), 这时会进入提交信息提示弹窗, 输入完提示信息后 再按C-c C-c 即可完成提交 (C-c C-k 放弃提交).
此时按a, 即 git commit --amend
- l: log弹窗
- r: rebase弹窗
可能看起来学习成本高, 但其实学会后好处要远远大于学习成本
如果这篇文章帮到了你, 那就赞助我一瓶水吧, 这可以让我有动力去写更多的文章
Sponsor