私は自分のローカル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を使用しています。
Gitが.git/rebase-merge
ディレクトリを削除しようとしたが、完全に削除できなかったようです。そのフォルダをコピーしてみましたか?また、.git/rebase-apply
フォルダーが存在する場合はコピーしてください。
ゾンビvim.exeプロセスが原因で同様の問題が発生しました。タスクマネージャーで強制終了し、その後にgit rebase --abort
それを修正しました。
これにはまりました。 head-nameファイルを作成した後、ontoファイルが見つからないという別のエラーが発生したため、そのファイルを作成しました。その後、anotherエラーが発生し、「。git/rebase-apply/onto」を読み取れませんでした:そのようなファイルまたはディレクトリはありません。
Soリベースのためにgit documentation を見て、git rebase --quit
という別のコマンドを見つけました。これにより、ブランチを変更せずに戻すことができ、リベースを最初からやり直すことができました。
Eclipseでも同じ問題がありました。 EclipseからRebase => abortできませんでした。
git rebase --abortをGit Bashから実行しました。
Windowsでは、マシンを再起動したくない、または再起動できない場合は、以下を参照してください。
Process Explorerのインストール: https://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx
プロセスエクスプローラーで、[検索]> [ファイルハンドル]またはDLL ...
エラーに記載されているファイル名を入力します(私のエラーでは「git-rebase-todo」でしたが、上記の質問では「done」です)。
Process Explorerは、ファイルのロックを保持しているプロセスを強調表示します(私にとっては「grep」でした)。
プロセスを強制終了すると、標準の方法でgitアクションを中止できます。
この名前のファイルを作成します。
touch .git/rebase-merge/head-name
git rebase
を使用するよりも
私の場合、エイターgit rebase --abort
およびgit rebase --continue
が投げていた:
エラー:「.git/rebase-apply/head-name」を読み取れませんでした:そのようなファイルまたはディレクトリはありません
手動で削除することで、この問題を解決できました:.git\rebase-apply
ディレクトリ。
あなたの答えを@Laura Slocumに感謝します
リベース中に物事を台無しにして、分離されたHEADと
error: could not read orig-head
そのため、リベースを完了できませんでした。
切り離されたHEADは正確に正しいリベースの望ましい状態を含んでいるようですので、私は走りました
rebase --quit
その後、新しい一時ブランチをチェックアウトして、切り離されたヘッドにバインドしました。
それをリベースしたいブランチと比較することにより、新しいtempブランチがまさに到達したい状態にあることがわかります。ありがとう
git version 2.19.2.windows.1
を使用しています。
私のために働いた唯一のことは、.git/rebase-apply/
ディレクトリを削除し、git reset --hard
を実行することでした。
私の場合は、それぞれのGitプロジェクトでSmartGitのログを開き、それぞれのプロジェクトディレクトリでTotal Commanderを開いていたためです。両方を閉じたとき、問題なくリベースできました。
考えれば考えるほど、Total Commander、つまりWindowsがgit rebaseが何かをしようとしていた開いたディレクトリをロックしているのではないかと疑っています。
フレンドリーなアドバイス:何かを修正しようとするときは、常に一度に1つの変更を行ってください。 ;)
Windows上のSublime Text 3では、インタラクティブコミットエディションに使用されるSublimeウィンドウを閉じるだけで問題が修正されます。
X個のコミットのリベースが十分に完了したら、最後のコマンドはgit rebase --continue
。これでプロセスが完了し、リベースモードが終了します。
上記のすべての手順を試しましたが、うまくいきませんでした。最後に、再起動コンピューターはこの問題に対処しました:D
同じ問題がありました。私は他の投稿で示唆されているようにプロセスエクスプローラーを使用し(その投稿を見つけることができません)、どのプロセスがファイルをロックしているかを見つけてそれを殺します。次に、必要に応じて--continueまたは--abortを実行します
再起動以外のすべてを試しましたが、私のために働いたのはrm -fr .git/REBASE_HEAD
私の場合、このすべてのオプションをテストした後でも問題が発生した後、Sudo git rebase --abort
そして、それは全部やった