2013-10-31 77 views
30

我很高興地使用vim作爲提交的默認編輯器,並且不希望改變它。然而,在重新貼牌時,我發現自己壓縮了幾十次和幾十次提交,使用像Textwrangler這樣的交互式編輯器(除了頂級提交之外,用「squash」代替「pick」),我發現這些提交更容易。git rebase --editor =/something/other/than/vim? (爲了更容易壓扁)

有什麼辦法可以爲一次性rebase命令指定備用編輯器嗎?

我知道在vim我可以這樣做:

:%s/pick/squash/ 

但有自己的小煩惱。

編輯 - 正如評論所說,你能夠壓制所有,但頂部犯下非常有效地去2號線和執行

:,$s/pick/squash/ 

(注意逗號和美元是原來的不同)

+5

在vim中,你可以做':,$ S /拾取/壁球/'這將改變所有出現在*電流行*直到文件的末尾。 –

+0

這是一個很棒的提示,謝謝Greg。是的,那是我所指的「小煩惱」。 –

+0

假設你有最新的vim版本或者安裝了Tim Pope的vim-git插件,你可以使用':Cycle'或':Squash'命令。你甚至可能想要使用映射。也許使用':global'命令:':+,$ g /./ Squash' –

回答

41

嘗試添加GIT_EDITOR環境變量的命令之前,就像這樣:

GIT_EDITOR=<editor of choice> git rebase <...> 

例如,使用nano我會鍵入:

GIT_EDITOR=nano git rebase -i abcdef1234 
+0

既然你沒有導出它,那麼命令終止時該變量值是否會被重置? (這將是理想的,但我猜你需要手動重置) –

+1

該變量僅設置用於該命令的一個調用。嘗試在沒有'GIT_EDITOR'的情況下再次運行'git rebase',然後再次使用默認編輯器。 –

+0

真棒,這是正確的答案。雖然我覺得我害怕學習更多vim是不合理的 –

4

沒有爲您的所有交互式底墊一個更好的選擇。

https://github.com/sjurba/rebase-editor

這是寫在節點專門爲互動變基的自定義應用程序CLI。

要安裝:

npm install -g rebase-editor 
git config --global sequence.editor rebase-editor 

或者紗:

yarn global install rebase-editor 
git config --global sequence.editor rebase-editor