+++ title = "Spacemacs Rocks Day 4, Magit workflow" date = 2018-11-15T11:00:00+08:00 lastmod = 2018-11-20T10:22:55+08:00 tags = ["emacs", "spacemacs", "magit"] categories = ["spacemacs"] draft = false weight = 3006 +++
如果magit状态下,不知道按键,则 SPC g s 后按 ? 号,查看。
Magit init, commit and commit messages
- SPC g i(magit-init)
- SPC u S(所有文件加入版本库)
- 按TAB查看文件的修改
- SPC g s(magit-status)
- s-1 (goto unstaged section)
- press tab to view diffs(code review)
- s to stage all changes
- c c -> c-c c-c to commit
- editing the commit message and the diff on the right
Commits in Action
- Ammend ( c a) 就是把之前的commit作修改。把最近的修改,加入到上一次的 commit 之中。
- write good commit messages
- squash unpushed commits (r l)
- reset commits (l l #)
- select a few line to commits
- discard changes, file wide or line wide
- revert commits
git push
- SPC g s
- M a(remote name, remote url)
- P
- 第一次的话,按 - u(git push)
- 按提示,一般是 p或u
git rebase squash 把2个或者多个 commit ,合并成一个。
- SPC g s
- 多个commit, 但是没有 push
- 找到最前的一个commit(commit 1)
- 按r i,进入一个commit 列表。
- C-c, C-c
- 按 r 再按s , 表示进入到 squash 状态
- 按 , c 进入最终的commit Message 编辑
- C-c C-c 退出。这时,观察到,2个commit已经合并成一个了。
- git push 吧。
git reset
SPC h d f 查找 magit-reset 函数, 知道,是在 git status状态下, 光标到希望reset 的 commit 的地方,然后按 o ,然后回车或者另选择。
discard unstaged changes
- discard 整个修改过的文件,直接在文件处按 x
- discard 文件中的部分修改,TAB后,按v选中,按x
总之就是先选中,然后按x,然后确认。
select a few line to commits
- press tab to view diffs(code review)
- v 选中修改的行
- s stage
这样就只选择部分进行 commit . 注意,有些应该是要删除原来的语句的哟。
revert commits
按 -
Branching basics
- b B to create branch
- m m to merge
- b b to switch branch
create a new branch
好像 b B 已经失效
SPC g s b c
merge develop branch
SPC g s m m
Rebase
- squash unpushed
- rebase to other branch
- interactive rebase
pull, push & send Pull request
- P P
- f f / f o to fetch branch
- F to pull
- s-g to send pull request
Misc
- cherry pick
- view github files