385

私はgitを使用していて、小さなコミットの後に大きなコミットを行いました。git rebaseプッシュする前に、2つのコミットを一緒に押しつぶすために使用することにしました。(私はこれまでこれを行ったことがありません。)

だから私はしました:

git rebase -i HEAD~2

これは私に私の編集者を与えました、そこで私は前のコミットを選びそして後のコミットを押しつぶすことを選びました。私が保存したとき、gitは言った:

エラー:「ファイル名」を統計できません:許可が拒否されました

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

今:

  • 実行すると、どちらのコミットも表示されませんgit log
  • git status私は「現在どの支店にもいない」と言っています。
  • 1つのファイルは変更済みとしてインデックスにリストされ、2つのファイルは追跡されていないものとしてリストされます。私の最初のコミットには1つのファイルしかありませんでした(私は思います)、そして私の2番目のコミットにはかなりの数がありました。

どうしたの!?どうすれば修正できますか?

4

36 に答える 36

705

エディター、エクスプローラー ウィンドウ、コマンド プロンプト、FTP プログラムなど、フォルダーを開いているすべてのプログラムを閉じてみてください。これにより、Windowsで常に問題が修正されます。

于 2012-01-11T03:03:29.870 に答える
308

IDE (VISUAL STUDIO/ATOM など) を閉じるだけです。それはうまくいくかもしれません

于 2013-09-25T19:55:45.857 に答える
214

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

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

おそらく最も簡単な方法は、次回は起こらないことを期待して、中止して再試行することです。

git rebase --abort

git apply実行する前にgitが実際に何をしようとしていたかを使用して知識を得ることができますgit rebase --continueが、正直なところ、これはお勧めしません。私がこれを試みたのを見たほとんどの場合、何かが誤って見逃されたり、台無しになったりする可能性は偶数よりも高い.

于 2011-05-11T21:41:59.483 に答える
24

私のマシンでこれを見ると、単に「あるプロセスでファイルが開いている」よりも悪いです。ファイルの実際の所有権は、私(管理者として実行中)が再起動後にのみアクセスできるようになるまでジャックされます。

私が知る限り、IISは問題の一部です。変更するために多くのファイルを必要とする2つの主要なブランチを切り替えると、IISが何かをしようとしているときに、gitはファイルまたはディレクトリ(通常はDLL)を削除します。この時点で、IISプロセスは、ディスク上のファイルを、ロックされていて誰も所有していないように見えるバージョンで自動的に上書きします。

この時点でIISを停止しても、それは行われません。私が見つけた最善の方法は、再起動することです。将来、主要なブランチ間で変更する前に、IISを停止することを忘れないでください。

私はそれが実際には質問に答えないことを知っていますが、他の人に役立つかもしれません。

于 2011-12-08T22:43:28.277 に答える
18

Windows では、これらのファイルをブロックするのは TortoiseGIT プロセスである可能性があります。タスク マネージャーを開き、プロセスTGitCache.exeを終了します。

于 2011-08-18T18:13:45.930 に答える
14

この回答のスレッドに出くわしました-このエラーはそのような偽のエラーです.#エラー:「reddit/app/views/links」を統計できません:許可が拒否されました

それが私が得たすべてです-マージしようとしたとき。私はいくつかの回答を読み、それから気づきました.私がしなければならなかったのは、たまたまAtomであるコードエディターを閉じることだけでした.

エディターを閉じたら、もう一度「git merge」を実行してboomを実行すると、うまくいきました。

なんという無意味なエラー:(

于 2015-12-15T16:47:24.463 に答える
10

使用しているIDE(使用している場合)も邪魔になっている可能性があります。それが QtCreator を使用しているときに私に起こったことです。

于 2011-09-27T07:33:10.823 に答える
7

これは、SublimeText を使用していて、プログラムの購入を求めるポップアップ ウィンドウが閉じられていない場合にも発生する可能性があります。

于 2014-09-30T06:19:48.837 に答える
6

IntelliJ統合ターミナル内でリベースしているときに、Windowsで私に起こりました。Git bashクライアント インスタンスが並行して実行されていることに気付きました。

Git bashを閉じると問題が解決しました。

于 2018-11-22T10:48:57.367 に答える
4

同様の問題がありました。しかし、解決するのは非常に簡単でした。Windows マシンで、私のファイル エクスプローラーには、あるブランチには存在するが、チェックアウトした別のブランチには存在しないフォルダーが開いていました。ファイル エクスプローラーを閉じると、問題が解決しました。

于 2015-04-16T15:17:41.033 に答える
2

上記の「Visual Studio を閉じる」の回答に同意します。

ただし、Visual Studio を閉じた後でも実行しなければならなかった追加の手順は、タスク エクスプローラーで "devenv.exe" Visual Studio プロセスを手動で強制 終了することでした。これを行った後、gitbash で再び実行できるようになりました。

gitプル

「ファイル名を統計できません」というエラーが消えました。おそらく、Visual Studio の拡張機能が、プロセスを閉じた後もプロセスを長時間開いたままにしていることが原因です。

于 2014-05-22T09:12:54.013 に答える
1

このエラーは、以前の git アクションのためにファイルがまだ「ロック」されているという事実によっても発生する可能性があります。これは、Windows ファイル システム レイヤーの仕組みに関係しています。これについての素晴らしい説明を読んだことがありますが、どこにあるか思い出せません。

ただし、その場合は基本的に競合状態であるため、中断されたリベース プロセスを続行するだけで済みます。残念ながら、これは常に私に起こるので、リベースを続けるために、この少し危険なヘルパーを書きました:

#!/bin/sh

set -e

git checkout .
git clean -df
git rebase --continue

さらに確実にしたい場合git rebase --edit-todoは、適用される次のコミットが実際に適用に失敗したものであるかどうかを確認するために使用できます。git clean -dn重要なファイルを削除しないようにするために使用します。

于 2016-07-10T11:07:15.343 に答える
1

Git Bash バージョン 2.9.0.windows1 を実行している Windows 10 64 ビットでも同じ問題が発生し、エディタとして Atom を使用しています。

これはうまくいきました。Windows Defender の除外対象に Git ソフトウェア フォルダー (私の場合、これは C:\Program Files\Git でした) を追加しました。

除外が追加された後、正常に機能しgit checkout 'file'ました。

于 2016-06-29T21:20:18.937 に答える
1

WindowsでPhotoshopを使用しているときに発生しました:画像を保存してからブランチに切り替えたとき(画像を開いたままPhotoshopを離れたとき)、gitエラーが発生しました。フォトショップで画像を閉じて再試行

于 2016-11-30T12:19:40.073 に答える
0

同じ問題ですが、SourceTree (または他の git クライアント) を使用しています。私のケースに対応する回答がないため、回答を追加しています。

ブランチを「develop」から「main」に変更すると、ローカル フォルダーの実際のファイルとサブフォルダーが変更されます。「マスター」に存在しなかったフォルダが完全に消去されず、Windows が (管理者であっても) アクセス権を失っただけであると認識することがあります。メインから開発にマージするとき、git クライアントはフォルダーにアクセスしようとします。アクセス権がない場合、前述のエラーが返されます。

  • あるブランチから最新のブランチに切り替えると、問題を解決してからマスターに戻すことができます (フォルダー/ファイルが実際にローカルで削除されているかどうかを再確認してください)。
  • クライアントやエディタを閉じても問題は解決しません!
  • 再起動は役立ちますが、時間の無駄です(IMHO)
于 2016-07-26T13:57:56.943 に答える
0

VS1013 が 8.1 を対象とするブランチにあり、8.0 ブランチをチェックアウトしようとしたときに、このエラーが発生しました。タブで VS に戻り、UpdateAll を許可する必要がありました。その後、エラーなしで 8.0 ブランチをチェックアウトできました。

于 2014-04-30T22:51:43.393 に答える
0

この問題に遭遇しました。ここでの答えはどれも、これを解決するために起こりませんでした。

ブランチに追加した nuget パッケージになってしまい、マスター ブランチに戻すと、存在しないように見えました。マージを行うと、newtonsoft ... xml could not stat と表示されます。問題のファイルに移動して開きますが、Windowsはファイルが見つからないというエラーを返しました(私はそれを正しく見ていましたが)

これを解決した方法は、ファイルを右クリックして削除し(これは機能しましたが、Windowsが見つけられなかったため開くことができませんでした???)、再度マージを試みたところ、問題は解決しました。

非常に奇妙な。

これが後で誰かに役立つことを願っています。

于 2016-06-15T20:06:45.667 に答える
0

同じエラーが発生したとき、Git Shell を使用している Windows マシンでも使用していました。

ただし、当時は複数の Git ターミナルを開いていました。

最初の端末は上記で投稿したエラーを受け取り、もう一方の端末は以前にgrunt serveyeoman から端末コマンドを実行していました (以下のリンク)。2 番目のターミナルは、ローカル サーバー インスタンスをホストするために開いたままにする必要がありました。

進行中のプロセスを実行しているすべてのターミナル ウィンドウをシャットダウンすると、エラーが解消される場合があります。

少なくともそれが私にとってはうまくいきました。2 番目のターミナル ウィンドウをシャットダウンすると、さまざまなブランチを簡単にチェックアウトしてファイルを操作できるようになりました。

Grunt Serve コマンド - Yeoman.I/O
http://yeoman.io/learning/

于 2014-09-25T20:13:47.767 に答える
-1

Program Files で sh.exe を右クリックし、[セキュリティ] タブで [管理者として実行] を設定することで、アクセス許可の問題を解決しました。

于 2012-08-30T13:13:52.267 に答える