ローカルの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
これにより、変更のないブランチに戻り、リベースを最初からやり直すことができ、新品同様になりました。