2011-08-12 165 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