2015-11-06 2 views
6

をキャンセルします。時々私は5つのコミットに戻る必要があると思うが、私は7が必要であることに気付く。しかしgitはすでにrebimエディタ.git/rebase-merge/git-rebase-todoをvimに持ってきた。Gitは:私のコミットをダウン潰すために<code>git rebase -i HEAD~5</code>に私が好きなインタラクティブリベース

Successfully rebased and updated refs/heads/my-branchname 

エディタで/ワットからリベースを停止する方法があります:私は、バッファは(VIM)は、その後のgitが言うことをやめた場合

?私は、私は別のシェルからgit rebase --abortが、それは私が別のバッファでの編集の真ん中になると思いgit-rebase-todoファイルにどうなるのかわからない可能性があるとします。

+1

:私たちは、CQがcquitのために不足していると見vimのヘルプページから

$ git rebase -i HEAD~4 # enter vim, then type :cq<enter> Could not execute editor 

正常にリベースされた "すべてのコミットは同じなので、効果的にノーオペレーションです。 –

答えて

10

あなたはこのようになります初期インタラクティブリベースエディタウィンドウにいる場合:あなたは、エディタウィンドウの内容をすべて削除し、それを保存、またはそれにエディタを引き起こすことによってリベースを中止することができ

pick f7f3f6d changed my name a bit 
pick 310154e updated README formatting and added blame 
pick a5f4a0d added cat-file 

# Rebase 710f0f8..a5f4a0d onto 710f0f8 
... 
... 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# 
# However, if you remove everything, the rebase will be aborted. 

エラーコードで閉じます。

がVIM、これは:wq続いd SHIFT+gで達成することができ、あるいはマイクH-Rは:cqを使用して指摘したようにエラーで終了するエディタを引き起こします。

すでにウィンドウを離れ、次のsquash/edits/etcを実行している場合、これはリベース全体を中止するのではなく、現在編集中のコミットの変更のみを中止することになります。この時点で上記のようにエディタを終了することができますが、さらにコマンドラインでgit rebase --abortを実行する必要があります。

+0

これは正しくありません。リベース操作全体を中断したいが、一連の対話型リベースの最後にいて、対話型リベースを "中止"しない。現在のrebaseステップコミットを中止するだけです。 – fourpastmidnight

+0

@fourpastmidnight私は私がついてくるかどうかはわかりません。削除と保存は、/ etc/squash/editを選択する初期エディタウィンドウにのみ適用されます。あなたがすでにそれを残していて、編集者の中で個々のスカッシュ決議をしているなら、これは当てはまりません。それはあなたが話しているケースですか? – whaleberg

+0

はい、そうです。私はOPの質問が_entire_ rebaseプロセスを中止することを理解していましたが、OPがスカッシュのエディタウィンドウに入った後でなければなりません。私は昨日同様の状況で自分自身を見つけて、あなたの答えに示唆したことを試しました。残念ながら、それはあなたのコメントでちょうど説明したように振る舞いました。おそらくあなたの答えを明確にすることは、他の人が私の間違いを避けるのに役立ちます(私はインタラクティブなリベースに少し新しくなりました)。いずれにしても、私は再度rebaseしてコミットを編集/分割することができましたが、その動作は予期せぬものでした。代わりに、おそらく、「それはリベースを中止します」と言うと言うの – fourpastmidnight

6

:cqと入力してリビーズをキャンセルするには、ゼロ以外の終了コードを使用してvimを終了させることができます。この結果は次のとおりです。枝が "だったにも関わらず、あなたがそのファイル内の何かを変更していない場合

             *:cq* *:cquit* 
:cq[uit][!]    Quit Vim with an error code, so that the compiler 
         will not compile the same file again. 
         WARNING: All changes in files are lost! Also when the 
         [!] is not used. It works like ":qall!" |:qall|, 
         except that Vim returns a non-zero exit code. 
+0

わかりました。 ':cq'とは何ですか? – Meltemi

+0

@Meltemi私は 'cq'の説明で答えを更新しました。 –

関連する問題