昨日はgitを学び始めましたが、最初のイメージが示すようにsshキーを作成したときに間違いました。git bashで削除するファイルが見つかりませんでしたが、ファイルエクスプローラに表示されます
私はプロンプトを、.bat
削除方法とドスdel
コマンドを試してみましたまだcd ..
という名前のファイルを削除することはできませんcannot find file
と述べました。ファイルサイズの属性は0バイトです。このファイルを削除する方法
?
昨日はgitを学び始めましたが、最初のイメージが示すようにsshキーを作成したときに間違いました。git bashで削除するファイルが見つかりませんでしたが、ファイルエクスプローラに表示されます
私はプロンプトを、.bat
削除方法とドスdel
コマンドを試してみましたまだcd ..
という名前のファイルを削除することはできませんcannot find file
と述べました。ファイルサイズの属性は0バイトです。このファイルを削除する方法
?
%PATH%
の<path/to/git>\latest\usr\bin
でCMD Windowsで "cd ..
"を削除できました。それでrm.exe
にアクセスできます。
[email protected] C:\test
> where rm
D:\prgs\git\latest\usr\bin\rm.exe
私が持っていた:それと
[email protected] C:\test
> dir /x
Volume in drive C is test
Directory of C:\test
08/08/2017 07:11 <DIR> .
08/08/2017 07:11 <DIR> ..
08/08/2017 07:11 0 cd ..
、私は、型付き:
[email protected] C:\test
> rm cd*
を消えていたcd ..
ファイルを、
rm.exe
はLinuxアプリケーションではありません。これは、Windows API関数kernel32.dll
とネイティブNTシステムコールntdll.dll
からリンクするmsys-2.0.dll
を使用します。
この問題を解決するためにWindows APIをバイパスする方法は、NtOpenFile
(ディレクトリを開き、それを削除するには "cd ..
"ファイル)、NtQueryDirectoryFile
(ディレクトリを表示)、NtSetInformationFile
(ファイルの削除処理を設定します)。 eryksunとして
コメントし、純粋なWindowsの構文あまりにも働いているだろう(意味は、それがrm
のようなGitのLinuxのようなコマンドを必要としません):
del "\\?\C:\test\cd .."
は "What does \\?\
mean when prepended to a file path" を参照してください。
これは、すべての文字列解析を無効にし、それに続く文字列をファイルシステムに直接送信します。
wowwwww!消して!!! VonC、ありがとう!私はgit rm.exeがファイルを削除できることを知りたいですか? gitコマンドで作成されているためですか? – figureout77
@ figureout77いいえ、gitコマンドで作成されたのではなく、ssh-keygen(https://linux.die.net/man/1/ssh-keygen、linuxコマンド、Git for Windowsにパッケージ化されています)によって作成されました。ファイルがGitによって追跡されなかったので、 'git rm'は機能しませんでした。 – VonC
@ figureout77私は、Linuxコマンドを必要としない代わりにWindowsの 'del'だけで答えを編集しました。 – VonC
ファイルのプロパティを調べます。そこにファイルの場所があります。その場所に移動し、そこから削除します。
ファイルの種類を確認してください。つまり、システムファイルである可能性があります。システムファイルであれば、削除することはできません。エクスプローラを管理者として開き、削除してみてください。
ファイルはgitコマンドを使用しているときに自分で作成されます。私は質問の説明の2つの画像をスクリーンショットします。削除しようとすると、ファイルが見つからないという問題があります。削除したり、名前を変更したり、移動したりしても問題ありません。 – figureout77
cdで右クリックして削除してください) –
@VijayAgrawal私はそれをしました。$ git rm "cd .."と応答しました。 fatal:pathspec 'cd ..'はどのファイルとも一致しません – figureout77
Windows APIは、MS-DOSから継承された奇妙な古い規則を使用してファイル名を正規化することをデフォルトとしています。だから、 "cd .."へのハンドルを開こうとすると、代わりに "cd"という名前を開き、後ろのスペースとドットを取り除いてみます。この前処理の方法は、完全修飾パスに '' \\?\ ''を接頭辞として付けることです。 CMDで次のコマンドを試してください: 'del" \\?\ D:\ lernen \ git \ learngit \ cd .. " – eryksun