4

私は GIT の初心者で、このプログラムがどれほど強力かを知りませんでした...いくつかのコマンドから 8 Gb を消去しました。
私が覚えているように、次の行を入力しました。

$git config --global user.name "my name"
$git config --global user.email "my email"
$git add *.c
$git commit -m
$git status

その後、追跡されたファイルと追跡されていないファイルがたくさんあるのを見て、それらを(gitから)削除しようとしました。私は自分の PC からそれらを削除するとは知りませんでした。だから私は次のことをしました:

$git rm
$git rm --cached *.c

このようにして、追跡されたすべてのファイルを削除しました。だから私は続けた:

$git clean -f
$git clean -f -d
$git clean -f -x
$git clean -d -x -n

このようにして、システムで使用されていない追跡されていないファイルの一部を削除しました(私はWindowsを使用しています)。そして今、これは私が持っているものです:

$git status
On branch master
Initial commit
Untracked files:
 (use "git add <file>..." to include in what will be commited)
 .gitconfig
 AppData/
 Desktop/
 Favourites/
 NTUSER.DAT
 NTUSER.DAT{some characters and numbers}
 ntuser.dat.LOG1
 ntuser.dat.LOG

$git checkout
fatal: You are on a branch yet to be born

もっとコマンドを使ったのかもしれませんが、覚えていません! 古いファイルを復元したいだけなので、この素敵な Git ソフトウェアの使用をやめます。

4

1 に答える 1

82

ああ少年。私はあなたがしたことを見ました、そしてそれはきれいではありません。「git clean」のドキュメントを読んでみましょう。

git-clean - 作業ツリーから追跡されていないファイルを削除します

これは、が復元できないファイルをgit-clean 削除することを意味します。 Git には、誤って実行しないようにいくつかの安全対策が講じられています。指定しない限りディレクトリは削除されず、パスしない限り無視されたファイルは削除されず、指定しない限り何も実行されません。git clean-d-x-f

ホーム ディレクトリを Git リポジトリに変更し、*.cファイルをコミットしてから、他のすべてを削除したようです。

基本的にはrm -rf *、またはdel /s *.*Windows での実行に似ています。 そうしないでください。

解決

バックアップから復元します。

バックアップを持っていない場合、これはなぜバックアップを持っているのかというオブジェクトの教訓であり、削除されたファイルの回復を試みる必要があります。また、コンピューターの電源を切り、これが完了するまで Windows を起動しないでください。完了。

「追跡されていないファイル」に関する注意

「追跡されていないファイル」とは、Git リポジトリの一部ではないファイルです。追跡されていないファイルが Git リポジトリの一部であると考えると、それらが削除されるまでますます危険なことを試みることがわかります。追跡されていないファイルは、そもそも Git リポジトリの一部ではなかったため、Git リポジトリから削除するために必要なことは何もありませんでした。

注意事項-f

-f/--forceオプションは、「このコマンドはデータを削除しますが、何をしているのかはわかっています」という意味です。コマンド プロンプトで入力する前に-f、このコマンドが削除するデータについて考え、実際に削除する必要があるかどうかを確認する必要があります。

たとえば、パラメータとしてgit rm受け取り-fます。このgit rmコマンドは、コミットされていない変更があるファイルの削除を拒否します。これは、変更が破棄されるためです。を使用-fすると、この動作がオーバーライドされ、 でデータを破棄できるようになりますgit rm

于 2012-10-23T18:47:51.587 に答える