2011-06-01 90 views
2

后git拉我已经完成git reset很难撤消合并之前提交ID合并。多少我的整个提交已经消失,我不能看到提交历史也。但我有提交id,在git show命令我可以看到我的更改。GIT拉删除了我的提交

我怎样才能找回我的变化,以及如何跟踪什么错误,我已经做了

+0

_Which_ commit不见了? – 2011-06-01 14:52:38

+0

@Karl Commit我在拉之前做出的 – Poorna 2011-06-01 16:25:38

+0

如果你想知道你实际犯了什么错误,你必须告诉我们除了拉之外你还做了什么。 git pull将永远不会从您的历史记录中删除提交;你做了别的事情。也许是'checkout',也许是'reset'? – Cascabel 2011-06-01 18:37:54

回答

3

,如果您有提交的哈希,并且您还没有运行垃圾收集,你可以随时返回到与git checkout <sha1>提交。如果你想重新应用它在你目前的头上,你可以做git cherry-pick <sha1>

+0

@keppla是否有任何理由为什么在合并之前重置硬件提交ID重置所有我的更改。无论如何,我可以在其他地方安全地保存这个悬挂提交 – Poorna 2011-06-01 13:25:36

+0

请问你可以发布你的命令吗?我没有完全清楚你做了什么,我的答案是一般的答案(几乎总能恢复)。 – keppla 2011-06-01 13:28:48

+0

@siri:'git reset --hard'被定义为删除所有未提交的更改,将当前分支移动到指定的提交并检出。先前提到的提交被记录在reflog中,所以你可以随时从那里取出('HEAD @ {1}'表示'HEAD'的前一个值,'branchname @ {1}'表示* branchname的前一个值* ('@ {2}'意味着前两个操作等等;默认情况下,历史记录在一段时间后过期(我不确定是默认30或90天) – 2011-06-01 13:33:46