【问题标题】:GIT Pull deleted my commitGIT Pull 删除了我的提交
【发布时间】:2011-09-06 07:19:58
【问题描述】:

在 git pull 之后,我已经完成了 git reset,以便在合并之前撤消与提交 id 的合并。不知何故,我的整个提交都消失了,我也看不到历史中的提交。但是我有提交 id,在 git show 命令上我可以看到我的更改。

我如何取回我的更改以及如何跟踪我所做的错误

【问题讨论】:

  • @Karl Commit 我在 pull 之前所做的
  • 如果你想知道你到底犯了什么错误,你必须告诉我们你除了 pull 还做了什么。 git pull 将永远从您的历史记录中删除提交;你做了别的事情。也许是checkout,也许是reset?
  • @Jefromi 在下面的答案中我已经给出了我执行的命令

标签: git git-merge git-reset git-commit


【解决方案1】:

如果你有提交哈希,并且你没有运行垃圾收集,你总是可以用git checkout <sha1>回到那个提交。如果你想在你当前的头上重新应用它,你可以做git cherry-pick <sha1>

【讨论】:

  • @keppla 有什么理由为什么在 git reset HARD 上在合并重置我的所有更改之前提交 id。无论如何我可以将这个悬空提交安全地保存在其他位置
  • 能否请您发布您执行的命令?我不清楚您到底做了什么,我的回答是一般性的(几乎总是可以恢复)。
  • @siri: git reset --hard 被定义为删除所有未提交的更改,将当前分支移动到指定的提交并检查它。先前指向的提交记录在 reflog 中,因此您始终可以从那里将其拉出(HEAD@{1} 表示 HEAD 的先前值,branchname@{1} 表示 branchname 的先前值(@987654327 @ 表示一次 2 次操作,以此类推;默认情况下,历史记录会在一段时间后过期(我不确定默认情况下是 30 天还是 90 天))
  • 我运行以下命令 git pull git reset --hard 5a582b3bbcc2fb2d99132d329b90dd0ab9b42298 (commit id before merge) git pull 我在这里看不到我的提交
  • @keppala 樱桃挑选后我收到一条消息警告:文件太多(创建:3250 已删除:828),跳过不精确的重命名检测自动挑选失败。解决冲突后,使用 'git add ' 或 'git rm ' 标记更正的路径,并使用以下命令提交结果: git commit -c 991f5528d4fbe036df26b1f686090f22c9c8fd18 。这是什么意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 2011-01-30
  • 2016-06-22
  • 2011-10-29
  • 2017-07-09
  • 2011-09-03
相关资源
最近更新 更多