2015-04-21 86 views
1

我们提交了一个修复了通过拉取请求合并的代码库的问题。现在无处可查。我不知道它是如何被删除的,因为它很久以前。好的是,我可以看到拉取请求,提交散列并在Stash上更改diff。如果所有这些信息仍然存在,我如何恢复提交?如何从Atlassian Stash中恢复丢失的git提交?

回答

3

如果你知道犯散,你可以检查你的本地仓库提交存在通过简单地调用git show

git show <commit-id> 

如果提交仍然存在,您可以创建一个从使用git branch

git branch save-my-old-commit <commit-id> 

新的分支。如果提交它不在你的本地库目前(这是可能的,当从任何裁判不可达),你可以尝试直接从远程存储库中取出,然后检查了一个新的分支:

git fetch origin <commit-id> 
git branch save-my-old-commit FETCH_HEAD 

如果原始提交起源从一个pull请求中,你也可以尝试从分叉仓库中取出(我没有Stash的经验,所以我假设它的工作方式类似于GitHub或Gitlab)。

将提交恢复到本地分支后,您可以按照您认为合适的方式继续,例如在当前分支顶部选择提交。

0

你有几个选项(IM上市仅少数人的,也有更多的选择):

  • 使用git bisect找出来的时候(提交),这是“走了”
  • 使用git reflog的发展机器准确地查看所做的事情以及何时(在该点之后回购没有被克隆)
  • 重新创建/重新打开拉取请求并重新合并它。

我的建议是使用git bisect找出它何时消失。

How to use git bisect?