emacs插件(3)——版本管理 magit

1、参考

emacs系列文章目录——更新inggit

A walk through the Magit interfacegithub

三年 Git 使用心得 & 常见问题整理segmentfault

2、magit status

快捷键 说明
M-x magit-init 相似于 git init,在现有目录中初始化仓库
M-x magit-clone 相似于 git clone,从远端拉取仓库
快捷键 说明
C-x g magit status 相似于 git status,但会显示更多的内容
tab 隐藏或者扩展当前的内容
g 刷新当前的git仓库状态
G 刷新全部的 magit status buffer
c-n 下一行
c-p 上一行
m-p 上一个部分
m-n 下一个部分

3、保留区 stage

快捷键 说明
s magit-stage, 将修改添加到保留区
u magit-unstage 将修改从保留区撤销

4、提交 commit

命令 说明
c magit-commit, 进入提交选项
c-c 在进入提交页面后, 再次执行命令 c, 建立新的commit
c-a 在进入提交页面后, 再次执行命令 a, 建立新的commit, 至关于git commit --amend
C-c C-c with-editor-finish, 提交commit
C-c C-k with-editor-cancel, 撤销本次提交

5、fetch/pull/push

命令 说明
f magit fetch,拉取最新的代码
F magit pull 拉取最新的代码,而且合并
P magit push 将本地代码push到远端

6、 branch分支操做

命令 说明
b magit-branch,进入分支管理
b-c 至关于 命令 git checkout -b dev origin/dev,即从远端origin/dev fork而且建立一个本地分支dev
b-b 替换到新的分支,git checkout branchName

7、 其余部分

7.1 stash使用

命令 说明
z-z magit-stash-both, 建立stash
z-a magit-stash-apply, 应用某个具体的stash
z-l 查看stash列表
z-p magit-stash-pop, 应用某个stash,而后在stash list中删除这个stash
z-k magit-stash-drop, 删除具体的stash

8、使用场景

8.1 添加操做

(1) 三个区域app

由于git中有3个区域 fetch

工做目录,即当前编辑目录spa

暂存区域, 能够经过git add fileName将文件添加到暂存区域rest

git本地仓库, 能够经过git commit将文件由暂存区域添加到本地仓库code

(2) 从未跟踪,已跟踪未暂存变为暂存状态get

名称 说明
命令 magit-stage
git命令 git add
快捷键 s

(3) 从已经暂存变为已经提交状态同步

名称 说明
命令 magit-commit
git命令 git commit
快捷键 c-c

(4) 从本地git仓库同步到远端git仓库

名称 说明
命令 magit-merge
git命令 git merge
快捷键 m m
命令 magit-pull
git命令 git pull
快捷键 F u
命令 magit-push
git命令 git push
快捷键 P u

8.2 撤销操做

(1) 工做目录中删除文件

名称 说明
命令 magit-discard
git命令 rm -rf fileName
快捷键 k

(2) 由暂存区域撤销到工做目录

名称 说明
命令 magit-unstage
git命令 git restore
快捷键 u

8.3 本地建立新的分支,同步到远端

命令 说明
b-c 建立一个新的分支, dev2
P-p 由于此时远端没有新的分支,只须要push此分支, dev2
F-u 配置pull对应的远端分支, 示例: origin/dev2

9、错误解决

9.1 wrong-type-argument transient-suffix

详见issue,

具体解决方式为,从新编译 transient.el,

从新编译的方式为 m-x byte-compile-file 具体的文件路径

9.2 GitError! refusing to merge unrelated histories

image.png

使用命令git pull --allow-unrelated-histories

git pull --allow-unrelated-histories
CONFLICT (add/add): Merge conflict in .gitignore
Auto-merging .gitignore
Automatic merge failed; fix conflicts and then commit the result.
相关文章
相关标签/搜索