2011-06-23 10 views
64

私はgitでコードをリベースしていましたが、いくつかのマージの競合がありました。私は紛争を解決し、 "追加"をしました。この時点で私は "git rebase --continue"をするのを忘れていました。私はコーディングを続け、変更のために "git commit"を行いました。今、私は "ブランチがなく"、 "git rebase --continue"を実行できません。これをどうやって解決するのですか?"git rebase --continue"を忘れて、 "git commit"をしました。直し方?

+1

'git status'とは何ですか? – hvgotcodes

+0

#現在支店にはありません。 コミットするものはありません(作業ディレクトリはクリーン) – Abhilash

答えて

17

私はそれを試してみる必要があるだろうが、私はこれは私がどうなるのかだと思う:

  1. タグを最新のコミット(またはあなたはそれを失うことはありませんので、どこかにそのSHA1を書き留め): git tag temp
  2. git rebase --abort
  3. もう一度リベースしてください。再度マージを解決する必要があります。 :(
  4. git rebase --continue
  5. git cherry-pick temp

これに伴う問題は、あなたのtempは、おそらくコミットマージの解像度、および新しいコードの両方が含まれていることです。それは難しいかもしれないが、私はそれを試してみてしまうのでそれが動作するかどうかを確認する。

+0

@MatrixFrogのようにタグ付けすることも、パッチとして保存することもできます。その後、rebaseを中止します。ステータスをチェックして、問題がないことがわかっている状態にレポがあることを確認してから、フェッチとリベースを開始します。 – yasouser

+6

これをしないでください。はるかにシンプルでクリーンな方法については、以下のkirikazaの答えをご覧ください。チェリーピックを混乱させずにもう一度闘争を解決してください。 – tandrewnichols

+3

@Abhilash kirikazaの答えを受け入れてください。私は(tandrewnicholsと同じように)これを行いました。もっと簡単な方法がありました(インターネットには、その答えに4倍のアップフォースがあるので同意するようです)。 –

125

ちょうどgit reset --soft HEAD^を行う。これは、その親にHEADポインタを移動しますが、作業ツリーを保持し、インデックスにマージ変更を追加します。あなたが以前のようにgit rebase --continueでリベース続けることができるようにします。

+0

これは完全に機能し、--softの使用を初めて知ったのです。感謝しています。 – mmocny

+0

これは素晴らしいです! –

+9

これは正しい回答者 –

関連する問題