FAQ
這個地方,我會記錄我在使用git或github中遇到的一些問題。
1. 在git bash 中如何退出vim編輯器?
2017/1/18
問題描述:
在使用git commit
git merge --no-ff xxx
等指令時會跳轉(zhuǎn)到一個“編輯器”(vim編輯器),然后我發(fā)現(xiàn)我沒法編輯,也不知道怎么退出,今晚(2017/1/18 20:54:21 )搞清楚了這個問題。
問題解答:
其實按 o i a 都可以進入編輯模式,接下來你可以對內(nèi)容進行修改,修改好后
方法一:按住Esc再按兩下大寫Z (注意是大寫) 就可以退出了,這種情況下是保存并退出。
方法二:按Esc退出編輯模式,如果想退出編輯器,按Shift+;(其實就是輸入個 “:" 冒號 ) ,接下來可輸入q!(不保存并退出)或 wq!(保存并退出)。
以上兩種方法都親測有效。
嗯 就是這樣。
2.git merge --no-ff 是什么意思?與git merge有什么區(qū)別?與 git merge --squash 有什么區(qū)別?
2017/1/18
問題描述:
之前因為遇到上一題的緣故,我在合并的時候一直用git merge
于是在看graph的時候 發(fā)現(xiàn)和我想象中的不一樣,分支去哪了?
問題解答:
--no-ff
指的是強行關(guān)閉fast-forward方式。
fast-forward就是直接使用git merge
的方式,當條件允許的時候,git直接把HEAD指針指向合并分支的頭,完成合并。屬于“快進方式”,不過這種情況如果刪除分支,則會丟失分支信息。因為在這個過程中沒有創(chuàng)建commit
git merge --squash
是用來把一些不必要commit進行壓縮,比如說,你的feature在開發(fā)的時候?qū)懙腸ommit很亂,那么我們合并的時候不希望把這些歷史commit帶過來,于是使用--squash
進行合并,此時文件已經(jīng)同合并后一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來“總結(jié)”一下,然后完成最終的合并。
總結(jié):
--no-ff
:不使用fast-forward方式合并,保留分支的commit歷史
--squash
:使用squash方式合并,把多次分支commit歷史壓縮為一次
看下圖就很明白了
本題解答參考 segmentfault