1. ホーム
  2. ギット

[解決済み】「破損した」対話型リベースを修正する方法は?

2022-04-01 03:46:08

質問

ローカルのgitリポジトリでちょっとした混乱を起こすことに成功しました。壊れたコミットを修正するために 次の指示 . git commit --amend" を実行する前に(そして git rebase --interactive の後に)私は自分の変更が正しくないと判断し、 "git reset HEAD --hard" を実行したのです。良いアイデアではありませんね。

今、対話型リベースは "stuck" になっているようです。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を使っています。

解決方法を教えてください。

Git が .git/rebase-merge ディレクトリがありますが、完全に削除できていません。そのフォルダをコピーしてみてはいかがでしょうか?また .git/rebase-apply フォルダがある場合は、そのフォルダを削除してください。