0

ローカルのみでマスターブランチしかないgitプロジェクトがあります。昨日、私はいくつかのコミットを行いました。今日、私は1つのコミットを行いました。コミットは正常に見えます-それは既存のファイルといくつかの新しいファイルの差分でした。

ただし、gitxでマスターブランチを見ると、今日のコミットのみが表示され、この1つのコミットですべてのファイルを最初からコミットしたように見えます。

Gitログには同じことが表示されますが、gitreflogには以前のすべてのコミットが表示されます。

$ git log
 commit bd7d6af7f916706c5df6d57bed883d2c2d81f60f
 Author: Sam Fen
 Date:   Wed Jun 20 12:00:38 2012 -0400

  Add Genotype class, update naming

$ git reflog
 bd7d6af HEAD@{0}: checkout: moving from master to master
 bd7d6af HEAD@{1}: commit: Add Genotype class, update naming
 bf0d3dd HEAD@{2}: commit: Add start to genetics manipulation library
 2335bf2 HEAD@{3}: commit: Convert to CoffeeScript
 4c26713 HEAD@{4}: commit: Initial commit with basic structure, trivial Jasmine t

reflogは、最後のものと同じハッシュ(bd7d6af)を使用した奇妙なダブルコミットのように見えるものを示していますが、これは、gitxで空の履歴を確認した後、コマンドラインに戻って「gitcheckout」と入力したためだと思います。私がマスターにいることを確認するためだけにマスター」(私はそうだった)。

何が起こったのか、そしてどうすれば私の歴史を取り戻すことができるのかについて何か考えはありますか?

4

2 に答える 2

0

bd7d6afはそれが最初のコミットであると考えているようです

git reset bf0d3dd; git add -A; git commit適切なコミットが得られるかどうか試してみることができます。

于 2012-06-20T16:22:30.543 に答える
0

bf0d3dd昨日行った最後のコミットである場合は、次のことができます。

git checkout master
git rebase --onto bf0d3dd master

これにより、現在のコミットが取得され、bf0d3ddその親になるように書き直され、マスターブランチが履歴に効果的に再アタッチされます。

どのようにしてこの状態になったのかはわかりません。いくつかの異なる方法がありますが、これまでに経験した一連の正確なイベントについて詳しく知る必要があります。

于 2012-06-20T16:39:08.610 に答える