「git rm」以降の復元

「git rm」以降の復元

some_dir_pathでgit repoを初期化しましたgit init。その後、私はすべてのファイルをrepoに含めずに公開することにしましたgit rm -f。私が思ったように、ディレクトリ自体ではなくgit repoからすべてのファイルが削除されました。現在、some_dir_path.git自体を除いて空です。

ls -aR some_dir_path:
.git:
branches  config  description  HEAD  hooks  index  info  objects  refs
...

もしそうなら、問題はデータを取得する方法があるかどうかです。以前にコミットを投稿したことがなく、元に戻す分岐もあり
ません。git rm -f

答え1

送信されたファイルがないため、今失われました。

コミットされた場合は発行して回復します。

git reset --hard

これにより、最後のコミット以降に削除されたファイルが復元されます(他のファイルへの変更も元に戻ります)。

また、見ることができますgit reset --help

答え2

まだ提出されていないgit rmので、プロセスは非常に簡単です。

始点:「onefile」を追加しました。

$  git cat-file -p HEAD:onefile         
content...
$  cat onefile
content...

git rm

$  git rm -f onefile 
rm 'onefile'
$  ls        

ファイルが本当になくなりました。 gitコマンドはコミットされていません。 (ラインrm 'onefile'出力、命令ではありません! )

現在のアドバイスは簡単です。慌てずに概要を確認してください。

$  git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    onefile

したがって、プロンプトに従ってください。

$  git reset HEAD *
Unstaged changes after reset:
D       onefile

削除がコミットされていないからステージングされていないに変更されました。

$  git archive HEAD -o playback.tar
$  tar xf playback.tar --to-stdout
content...

git rm送信された場合はgit reset HEAD~aが必須です。

次のコマンドの後にリポジトリが空の場合、git initこのgit rmコマンドは「安全」になります。

$  git rm * 
fatal: pathspec '*' did not match any files

Qはinitとrmの間に何が起こるのかを隠します。 git addでやるべきですか?

関連情報