Git:提交失踪

时间:2015-09-16 11:49:58

标签: git commit reset

我不知道怎么样,似乎我失去了一些select B.pid from Persons B LEFT JOIN Persons A ON A.PersonID = B.pid where A.PersonID IS NULL AND B.pid IS NOT NULL

我开始使用名为git commit

的提交

然后我做了一些工作和一些提交,没有藏匿,没有rebase,没有checkout。只提交。

然后我错了编辑文件(第485行) 并运行:Drawing datas in rates-heatmap directive, needs to be correctly positioned,(第489行) 做了一些编辑,提交(第499行)  现在所有在拳头之前完成的提交(第370行)都缺失了。

关于如何检索它们的任何想法?

这是我的bash历史:

git reset --hard

以下是 370 git commit -m "Drawing datas in rates-heatmap directive, needs to be correctly positioned" ... 475 git commit -m "HeatMap and chart resize fixed" ... 482 git commit -m "Moved pre-commit in pre-push" 483 cd Sites/motusq 484 cd Sites/motusquo_admin/ 485 vim .git/hooks/pre-commit 486 git status 487 git diff prepush.sh 488 git reset --jard 489 git reset --hard 490 rm -rf .git/hooks 491 git status 492 npm install 493 ls .git 494 mkdir .git/hooks 495 npm install 496 <:#<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<:a<: 497 git status 498 git add package.json 499 git commit -m "Linked prepush script" 的输出:

git log

还尝试commit c51add23b302401cc707ce78cbdc7d2cebebecd1 Author: Matteo Scandolo Date: Wed Sep 16 12:33:22 2015 +0200 Linked prepush script commit 23bb7ad9fc939b4fced8787d113194c6b66cea31 Author: Matteo Scandolo Date: Mon Sep 14 17:04:31 2015 +0200 Drawing datas in rates-heatmap directive, needs to be correctly positioned commit c2f3637e9d51e4632ceefa5019b4430de9ae06e4 Author: Matteo Scandolo <matteo.scandolo@link-me.it> Date: Mon Sep 14 14:55:13 2015 +0200 ,但情况相同:

git reflog

有关如何恢复该提交的任何想法?

1 个答案:

答案 0 :(得分:0)

看看git reflog。它应该将先前版本的HEAD(在您上次提交之前)显示为HEAD@{1}

您可以运行git log HEAD@{1}以确认它显示正确的历史记录,或者为该提交添加分支或标记,然后浏览所有引用。一旦你看到发生了什么,你可以使用merge或rebase来修复你的历史。

要进行浏览,您可以使用gitk --all进行图形浏览,或git log --graph --full-history --all --decorate在终端中查看。

关于评论:

如果您提交了某些内容,并且它没有显示在reflog中,则可能性为:

  1. 它发生在很久以前,并且结束了。这似乎不太可能,除非你的历史中显示的事情发生了很多次
  2. 你正在查看错误的repo / reflog
  3. 提交失败,您没有注意到
  4. 如果提交成功,推进HEAD,则应该立即更新reflog,因此没有明显的方法让提交丢失。

    进一步说明:编辑到问题中的输出是{em>而不是来自git reflog - 它应该看起来像

    $ git reflog
    9436c1a HEAD@{0}: commit (amend): TASK-209.
    58a0687 HEAD@{1}: commit (amend): TASK-209
    ...
    89acb5d HEAD@{6}: rebase -i (finish): returning to refs/heads/task209
    89acb5d HEAD@{7}: rebase -i (fixup): initial work
    7560e14 HEAD@{8}: rebase -i (fixup): updating HEAD
    304b5a4 HEAD@{9}: rebase -i (fixup): # This is a combination of 16 commits.
    ...
    d3e7529 HEAD@{39}: checkout: moving from task209 to d3e7529
    5267db8 HEAD@{40}: commit: fixup format, sketch events
    0e23e6f HEAD@{41}: commit: Combine new top-level code with existing version.