[英]How to recover a file history in git
在可以正常工作的Eclipse Kepler 4.3.2副本中安裝Android工具后,出現了某些錯誤,這是我被迫刪除Eclipse並重新安裝它的原因。 我的工作區受到威脅,甚至我的git存儲庫也損壞了。
在過去的三周中,我每天至少提交一次文件,這些文件已還原為第一個版本。 這僅是災難的一個示例,其他文件的歷史記錄也已損壞,此特定情況如下所示
git log -p --follow PartyEvaluationModels/Resources/Rules/Person.d2wmodel
commit d48d3c9b7dbb8769278a70f1400947d87e7f0d6d
Author: Ângelo Andrade Cirino <>
Date: Tue May 13 15:11:20 2014 -0300
Tentativa de implementação com ERPartials e adição de arquivos de regras
para todas as entidades até agora definidas.
diff --git a/PartyEvaluation/Resources/d2w.d2wmodel b/PartyEvaluationModels/Resources/Rules/Person.d2wmodel
similarity index 100%
copy from PartyEvaluation/Resources/d2w.d2wmodel
copy to PartyEvaluationModels/Resources/Rules/Person.d2wmodel
commit 4d51eb3fa72fee750ba4b0a7e8c53216a9ea0b25
Author: Ângelo Andrade Cirino <>
Date: Thu May 8 23:17:01 2014 -0300
Funcionalidades para omitir atributos de entidades e abas de telas de
edição de entidades foram implementados com sucesso.
diff --git a/PartyEvaluation/Resources/d2w.d2wmodel b/PartyEvaluation/Resources/d2w.d2wmodel
index b6b1df4..7793fda 100644
--- a/PartyEvaluation/Resources/d2w.d2wmodel
+++ b/PartyEvaluation/Resources/d2w.d2wmodel
@@ -1,4 +1,4 @@
{
- rules = (
- );
-}
+ "rules" = (
+ );
+}
\ No newline at end of file
commit df14fc9d4dc2f811307b704f85d59b8cc8b0b9a7
Author: Ângelo Andrade Cirino <>
Date: Sun Mar 30 23:44:27 2014 -0300
Inserção do projeto Party
diff --git a/PartyEvaluation/Resources/d2w.d2wmodel b/PartyEvaluation/Resources/d2w.d2wmodel
new file mode 100644
index 0000000..b6b1df4
--- /dev/null
+++ b/PartyEvaluation/Resources/d2w.d2wmodel
@@ -0,0 +1,4 @@
+{
+ rules = (
+ );
+}
如我所說,該文件幾乎每天都會提交,現在它的所有歷史記錄都在本地和GitHub上丟失了。 由於我的本地副本和GitHub失去了歷史,我想我在幾個文件上的工作浪費了三個星期。
如果有人幫助我找到解決方案,我將不勝感激。
我很好奇GitHub的歷史也是如何消失的。 除非您使用push --force
否則這是不可能的。 您是否有可能在另一個分支上完成了所有這些工作?
假設不是...
git reflog
將向您顯示HEAD的舊“知識”; 它會記住分支在重寫歷史之前的樣子,並且通常會為您丟失的內容添加一個哈希。
或者在所有分支上執行相同的操作, git log -g --abbrev-commit --pretty=oneline --all
。
找到提交后,請檢出master並執行git reset --hard SHA
以強制將該分支指向正確的哈希。 但是請確保您具有正確的提交,否則只會使情況變得更糟。 :)
您可以使用git revert commit_sha
如果您采用這種方式,則不會覆蓋您的歷史記錄,並且每次還原都會創建一次提交
否則,您可以使用commit_sha檢出文件,然后提交更改。 這種方式只會在您的歷史記錄中創建一次提交
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.