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.
相關文章
相關標籤/搜索