質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

git rebase の使い方

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 624
退会済みユーザー

退会済みユーザー

過去に追加した機能がステージングでまだ動作確認が終わらず
それ以降追加された機能が本番デプロイできないので
いったんその機能だけを無効にしたいと思っています

git rebase というのを使えばできるみたいなのですが使い方がわかりません

git log でコミットを確認して
git rebase -i xxxxxxxxx で消したいコミット番号を指定したところ
vi の画面がでてきてそこには確かに指定したコミットはでてきていないので
そのまま Shift+Z+Zで保存して
'git log' をしたのですがコミット履歴には残っていてファイルも変更されていません

rebase の画面に 

Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

というのがあったのでもう1度実行して
ためしに d をおしてみると1行目の関係ないコミットが消えてしまい
あわてて :q! をしたのですが
Successfully rebased and updated
とでてしまって conflict したような状態になってしまいました

both modified になってるファイルをコミットして both-modified がなくなったにもかかわらず
(シェルのプロンプトにブランチ名を表示する機能がついてるのですが)
ブランチの状態が |rebase というのがついたまま消えず stash や checkout ができません

何がどうなってるのかさっぱりわからないので
いったん rebase 前の状態に戻す方法と
再度 rebase のやり方を教えていただけないでしょうか

よろしくお願いいたします

追記:

rebase 前には戻せたのですがやはり rebase の使い方がよくわかりません

git rebase -i xxxxxxxxxx

で1つ前のコミットを指定すると消したいコミットがリストにでてくるようになったのですが
その行で d を押しても何も起こりません

その後カーソルキーを右に動かそうとすると1文字だけ消えて
下に動かそうとすると次の無関係のブランチごと2行1度に消えてしまいます

気にせず保存してしまっていいのでしょうか…

しかも :q! でキャンセルしようとしても毎回
Successfully rebased and updated
となってしまうのですが毎回何か変更がされてしまっているのでしょうか

vi の環境の問題なのでしょうか…

使ってるものは
macOS 10.13.6 
iterm2 3.2.9
zsh 5.6.2 (x86_64-apple-darwin17.7.0) 
VIM - Vi IMproved 8.0
です

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

いったん rebase 前の状態に戻す方法と
再度 rebase のやり方を教えていただけないでしょうか

まずgit rebase --abortで現在作業中のrebase内容を中断して、rebase作業に入る前の状態に戻してください。
次に、git rebase -i 《消したいコミットIDの一つ前のID》を実行してください。
rebaseコマンド実行後に表示されるテキストエディタで、消したいコミットの行頭をdに変更すれば、そのコミットを除いた状態にすることができます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/24 13:19

    回答ありがとうございます
    git rebase --abort
    で rebase という表示は消えたのですが
    git pull を行うと merge するかきかれる vi の画面がでてきてしまいます
    さっき1度 both-modified を消すためにコミットしてしまったのが原因なのかもしれないですが
    そのコミット履歴が git log にみあたりません

    rebase 前に戻すにはどうすればいいのでしょうか

    キャンセル

  • 2019/04/24 15:23

    ありがとうございます
    できたみたいです

    コマンドを叩いた時点で消したいコミットを指定するんだと思ってたので
    《消したいコミットIDの一つ前のID》
    を教えていただいてありがとうございました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る