1. ホーム
  2. git

[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"

2022-02-01 11:12:07

質問

gitを使用していて、小さなコミットの後に大きなコミットをしました。 私は git rebase を使い、2つのコミットを一緒につぶしてからプッシュします。 (こんなことは初めてです)。

だから、そうしたんだ。

git rebase -i HEAD~2

これでエディタができあがりました。ここで私は以前のコミットを選び、後のコミットを破棄することにしました。 保存すると、git はこう言いました。

error: cannot stat ' ファイル名 ': パーミッションが拒否されました

適用できませんでした 後のコミットのためのsha1 ... そのコミットのテキストの最初の行

今すぐ

  • を実行すると、どちらのコミットも表示されません。 git log .
  • git status は、私が "現在どのブランチにも属していないことを教えてくれます。
  • 1つのファイルが修正済みでインデックスに表示され、2つのファイルが未追跡として表示されています。 私の最初のコミットでは1つのファイル(と思う)、2番目のコミットではかなりの数のファイルがありました。

何が起こったのか!? どうしたら直るの?

解決方法は?

このエラーはWindowsでしか見たことがありません。このエラーの意味は、パッチを適用しようとした瞬間に、何かがgitのファイル変更をブロックしてしまったということだと思われます。

Windowsは、本当は必要ないはずのファイルへの排他的アクセスをプロセスに与える傾向があります。過去には、ウイルスチェッカーが一つの疑惑の原因でしたが、私はこれを決定的に証明したことはありません。

おそらく最も簡単な方法は、中断してもう一度やり直し、次回は起こらないことを祈ることでしょう。

git rebase --abort

を使おうとすることができます。 git apply を実行する前に、gitが実際にどのようなコミットを行おうとしていたかを知ることができます。 git rebase --continue しかし、正直なところ、私はこれをお勧めしません。私が見た限りでは、この方法を試すと、何かを偶然に見逃したり、台無しにしたりする可能性が高いのです。