2011-08-12 118 views
2

我在我的git仓库中只有一个主分支。我COMMITED更改我的文件昨天晚上:git checkout文件名恢复了我最后一次提交

git add filename 
git commit -m 'my message' 

今天早上,我是做一些,后来我想恢复更多的变化(我没有添加这些更改指标,他们只是在我的文件系统)。我当时一看here,并使用下面的命令:

git checkout path/to/file/filename 

现在我发现我犯下拉斯不见了。我做了一个搜索,发现this,但它指的是git恢复。

如果我做git log,我最后一次提交显示在那里,但文件中的更改不是。如果我做git状态,我不会显示任何更改,并且“没有添加提交”消息。

它为什么还原我最后一次提交?我如何重新应用提交?

在此先感谢。

+0

你检查过'git reflog'吗? – VonC

+0

我无法重现这一点。编辑:好吧,我意识到这并不意味着太多。也许你可以创建一个测试库并测试这种行为?和'reflog'应该能给你最好的工作。祝你好运! – Unapiedra

+0

谢谢。我做了git reflog,它显示了我所有的提交。 – Esclapes

回答

2

如果由于某种原因你从昨天的提交已经消失,寻找所述提交的第一个地方在reflog
例如见 “how to undo a checkout in git?

git reflog 
git reset --hard <sha from reflog>< 

你甚至可以 “Query git reflog for all commits to a specific file”。

+0

谢谢,我有很多东西要学习,本周才开始。将检查您的链接。 看着日志-p我看到一些文件很好地添加到提交,而另一些则没有。我通过扩展名git add * .png添加了它们并添加* .css(可能是我错误的密码) – Esclapes