「破損した」インタラクティブリベースを修正するにはどうすればいいですか? 質問する

「破損した」インタラクティブリベースを修正するにはどうすればいいですか? 質問する

ローカルのgitリポジトリにちょっとした混乱を招いてしまいました。壊れたコミットを修復しようとしていたのですが、指示に従う「git commit --amend」を実行する前(および git rebase --interactive の実行後)に、変更が間違っていると判断したため、「git reset HEAD --hard」を実行しました。これは良い考えではありませんでした。

現在、対話型リベースが「スタック」しているようです。Git は現在のブランチを (|REBASE-m) として表示します。リポジトリ内のすべてのコマンド (cd ..、ls、git rebase...) で次のエラーが発生します。

cat: .git/rebase-merge/head-name: そのようなファイルまたはディレクトリはありません

git rebase --abort は次のようになります。

$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory

git rebase --continue の結果は次のとおりです。

$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory

何かアイデアはありますか? よく考えたリベース操作を開始する前の状態に状況をリセットしたいと思います。

git log --oneline で状況を表示すると次のようになります。

4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script

そしてこれは大丈夫です。

私はmsysgit v1.7.0.2を使用しています。

ベストアンサー1

私はこれに困ってしまいました。head-name ファイルを作成した後、onto ファイルが見つからないという別のエラーが発生したので、そのファイルを作成しました。その後、 '.git/rebase-apply/onto' を読み取れないという別のエラーが発生しました。そのようなファイルまたはディレクトリはありません。

そこでgitを見てみたドキュメンテーションリベース用に別のコマンドを見つけました:

git rebase --quit

これにより、変更のないブランチに戻り、リベースを最初からやり直すことができ、新品同様になりました。

おすすめ記事