簡體   English   中英

如何在git中恢復文件歷史記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM