恢复丢失的数据git?

时间:2019-03-21 14:07:12

标签: git git-merge

将功能分支合并到本地(与主服务器)并推送到远程后,已经完成的功能从主服务器(远程)丢失。是否有办法恢复丢失的文件?

2 个答案:

答案 0 :(得分:3)

您可以返回git历史记录。例如

git reset --soft HEAD~N

其中N是您要放弃的最近提交的数量。 --soft参数将保留舞台上本地本地远程仓库中的更改。您还可以使用--hard参数完全删除更改(您始终可以将其从远程存储库中拉出)。

另一个选择是使用git log命令浏览您的gitlog,找到一个提交,该提交指向进行关键更改之前的状态(您可以使用grep来过滤提交消息)并签出此内容用命令提交

git checkout COMMIT_HASH

其中COMMIT_HASH是您的提交哈希

返回历史记录后,尝试查找丢失的代码。然后,您可以将其复制到某个地方,执行git reset --hardgit pull,将其粘贴到最新的源中,然后执行新的提交,或者尝试使用git的Cherry Pick功能。

请注意,仅当最近的推送未覆盖回购历史记录(在使用--force参数进行推送的情况下才可能发生)或其提议确实可行时,建议的解决方案才是可行的,但是您还没有拉他们。

此外,请记住, git是分布式VCS ,因此,在强行推动的情况下,您可以尝试从团队中寻找尚未进行恢复和恢复的同事他的本地仓库中的历史记录。

答案 1 :(得分:1)

在看到树或合并命令之前情况尚不清楚。

但是您总是可以在执行合并的本地存储库中使用git reflog。合并之前,您将看到版本库。假设功能/文件在一个分支上或易于添加到单独的分支中;您可以从那里简单地创建一个新的功能分支并将其推送到远程。在将新创建的分支合并回master时,它可能会做同样的事情。因此最好在master之上重新建立新分支