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でやるべきですか?