【问题标题】:How to recover a commit in git如何在 git 中恢复提交
【发布时间】:2018-10-17 20:12:24
【问题描述】:

我整天都在做一个个人项目,并将其提交给一个分支。然后我意识到我要提交到 master 并创建一个新的分支来推送,然后 git 切换到那个分支。之后我切换回来但找不到我的提交。有没有办法从我创建分支之前恢复提交?它恢复了我的很多工作。

【问题讨论】:

  • 你执行了哪些命令?

标签: git git-branch git-commit


【解决方案1】:

git reflog 应该会有所帮助,只要它在某个时候被提交,它仍然会在那里。

你会得到如下输出:

57a5b3a (HEAD -> some-branch, origin/some-branch) HEAD@{0}: commit: made changes
3092bca HEAD@{1}: commit: Other changes
7021685 HEAD@{2}: commit: More changes
2d882b8 HEAD@{3}: commit: even more changes
dc30cbc (origin/master, master) HEAD@{4}: checkout: moving from master to some-branch
dc30cbc (origin/master, master) HEAD@{5}: commit: I hope your commit messages are better than this

只要找到一个看起来像你想要的那个并检查一下

【讨论】:

  • 我想我找到了,如果我签出提交,更改是否应该在本地?
  • 一旦你检查出来,它们就会在本地,如果我没记错的话你会处于“分离的头部状态”,所以一旦你看到你的改变,你可能不得不做“git checkout -b some_branch" 然后在那里提交
  • 你知道如何将分离的头部合并到一个分支吗?你只是推送到远程分支之一吗?
  • 可能有更好的方法,但我会这样做:git checkout -b tempgit add .git commit -m whatevergit checkout real-branchgit merge tempgit push
【解决方案2】:

reflog 命令在这里可能很有用。它将显示分支尖端的历史记录。

如果您确实提交了工作并且现在已在该分支上签出,我不确定您是如何“丢失”提交的。

【讨论】:

    【解决方案3】:

    如果您记得该消息(ctrl-r 可能会有所帮助),您可以通过以下方式找到提交:

    git log --all --grep 'the message'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-15
      • 2021-04-13
      相关资源
      最近更新 更多