298

ローカルの 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 を使用しています。

4

18 に答える 18

210

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

于 2010-09-10T18:47:30.870 に答える
91

ゾンビ vim.exe プロセスが原因で、同様の問題が発生しました。タスクマネージャーでそれを殺してから、それをgit rebase --abort修正しました。

于 2011-01-21T10:37:10.493 に答える
7

Eclipseでも同じ問題がありました。リベースできませんでした => Eclipse から中止します。

Git Bash からgit rebase --abortを実行するとうまくいきました。

于 2014-04-04T06:46:29.943 に答える
7

Windows で、マシンを再起動したくない、または再起動できない場合は、以下を参照してください。

Process Explorer をインストールします: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Process Explorer で、[検索] > [ファイル ハンドルまたは DLL ...] を選択します。

エラーに記載されているファイル名を入力します (私のエラーでは「git-rebase-todo」でしたが、上記の質問では「done」です)。

Process Explorer は、ファイルのロックを保持しているプロセスを強調表示します (私にとっては「grep」でした)。

プロセスを強制終了すると、標準的な方法で git アクションを中止できるようになります。

于 2015-03-27T10:32:03.613 に答える
1

私の場合は、それぞれの Git プロジェクトで SmartGit のログを開き、それぞれのプロジェクト ディレクトリで Total Commander を開いたことが原因でした。両方を閉じると、問題なくリベースできました。

考えれば考えるほど、Total Commander、つまり、git rebase が何かしようとしていた開いているディレクトリを Windows がロックしていると思われます。

友好的なアドバイス: 何かを修正しようとするときは、常に一度に 1 つの変更を行います。;)

于 2016-03-09T08:51:23.290 に答える
0

X 個のコミットのリベースを問題なく完了したら、最後のコマンドはgit rebase --continue. これでプロセスが完了し、リベース モードを終了します。

于 2013-10-24T16:25:54.687 に答える
0

私も同じ問題を抱えていました。他の投稿で提案されているようにプロセスエクスプローラーを使用し(その投稿を見つけることができません)、ファイルをロックしているプロセスを見つけて強制終了しました。次に、必要に応じて --continue または --abort を実行します

于 2014-07-09T00:38:37.170 に答える
0

私の場合、このすべてのオプションをテストし、まだ問題が発生した後、私が試したところsudo git rebase --abort、すべてが実行されました

于 2016-05-03T13:34:54.090 に答える
0

再起動以外のすべてを試しましたが、私にとってうまくいったのはrm -fr .git/REBASE_HEAD

于 2019-05-07T12:59:00.943 に答える
-3

私はEclipseでgitを使用していますが、同じ問題を抱えていました。

最終的に、「Rebase ...」メニュー エントリが一時的にサブメニューに変換されていることがわかりました。

チーム -> リベース -> 中止

それは私のために働いた。

于 2014-10-14T12:57:15.457 に答える