2017-08-08 6 views
1

昨日はgitを学び始めましたが、最初のイメージが示すようにsshキーを作成したときに間違いました。git bashで削除するファイルが見つかりませんでしたが、ファイルエクスプローラに表示されます

create file img

私はプロンプトを、.bat削除方法とドスdelコマンドを試してみましたまだcd ..
という名前のファイルを削除することはできませんcannot find fileと述べました。ファイルサイズの属性は0バイトです。このファイルを削除する方法

file in explorer

+0

cdで右クリックして削除してください) –

+0

@VijayAgrawal私はそれをしました。$ git rm "cd .."と応答しました。 fatal:pathspec 'cd ..'はどのファイルとも一致しません – figureout77

+0

Windows APIは、MS-DOSから継承された奇妙な古い規則を使用してファイル名を正規化することをデフォルトとしています。だから、 "cd .."へのハンドルを開こうとすると、代わりに "cd"という名前を開き、後ろのスペースとドットを取り除いてみます。この前処理の方法は、完全修飾パスに '' \\?\ ''を接頭辞として付けることです。 CMDで次のコマンドを試してください: 'del" \\?\ D:\ lernen \ git \ learngit \ cd .. " – eryksun

答えて

3

%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* 

そしてeryksunによってcommentedとして

を消えていた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" を参照してください。
これは、すべての文字列解析を無効にし、それに続く文字列をファイルシステムに直接送信します。

+0

wowwwww!消して!!! VonC、ありがとう!私はgit rm.exeがファイルを削除できることを知りたいですか? gitコマンドで作成されているためですか? – figureout77

+0

@ figureout77いいえ、gitコマンドで作成されたのではなく、ssh-keygen(https://linux.die.net/man/1/ssh-keygen、linuxコマンド、Git for Windowsにパッケージ化されています)によって作成されました。ファイルがGitによって追跡されなかったので、 'git rm'は機能しませんでした。 – VonC

+0

@ figureout77私は、Linuxコマンドを必要としない代わりにWindowsの 'del'だけで答えを編集しました。 – VonC

0

ファイルのプロパティを調べます。そこにファイルの場所があります。その場所に移動し、そこから削除します。

ファイルの種類を確認してください。つまり、システムファイルである可能性があります。システムファイルであれば、削除することはできません。エクスプローラを管理者として開き、削除してみてください。

+0

ファイルはgitコマンドを使用しているときに自分で作成されます。私は質問の説明の2つの画像をスクリーンショットします。削除しようとすると、ファイルが見つからないという問題があります。削除したり、名前を変更したり、移動したりしても問題ありません。 – figureout77

関連する問題