恢复丢失的数据 git?

Recover lost data git?

在本地(与 master)合并特性分支并推送到远程后,一个已经完成的特性从 master(远程)丢失了。有没有办法恢复丢失的文件?

看树或合并命令前情况不清楚

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

之上重新建立新分支

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

git reset --soft HEAD~N

其中 N 是您要丢弃的最近提交的数量。 --soft 参数将在舞台上本地保留来自远程仓库的更改。您还可以使用 --hard 参数完全删除更改(您始终可以从远程仓库中提取它们)。

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

检出此提交
git checkout COMMIT_HASH

其中 COMMIT_HASH 是您的提交哈希值

回到历史后,尝试找到丢失的代码。然后,您可以将其复制到某处,执行 git reset --hardgit pull,将其粘贴到最新的源代码中并执行新的提交,或者尝试使用 git 的 cherry pick 功能。

请注意,建议的解决方案只有在最近的推送没有覆盖 repo 历史记录时才可行(在使用 --force 参数推送的情况下可能会发生这种情况) 或者他们做了,但你还没有把它们拉下来。

另外,记得git是分布式VCS,所以在push with force和pull的情况下,可以尝试找你团队的同事,谁还没有从他的本地存储库中完成拉取和恢复历史记录。