0

我有一个只有本地的 git 项目,并且只有一个 master 分支。昨天我做了一些提交。今天我做了一个承诺。提交看起来不错——这是现有文件和一些新文件的差异。

但是,当我在 gitx 中查看我的 master 分支时,它只显示了今天的提交,并且看起来就像我通过这一次提交从头开始提交了所有文件。

Git 日志显示了同样的内容,但 git reflog 显示了我之前的所有提交:

$ 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 中看到空的历史记录后,我回到命令行并输入了 'git checkout主人'只是为了确保我在主人(我是)。

关于可能发生的事情以及如何恢复我的历史的任何想法?

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 回答