恢复丢失的数据 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 --hard
、git pull
,将其粘贴到最新的源代码中并执行新的提交,或者尝试使用 git 的 cherry pick 功能。
请注意,建议的解决方案只有在最近的推送没有覆盖 repo 历史记录时才可行(在使用 --force
参数推送的情况下可能会发生这种情况) 或者他们做了,但你还没有把它们拉下来。
另外,记得git是分布式VCS,所以在push with force和pull的情况下,可以尝试找你团队的同事,谁还没有从他的本地存储库中完成拉取和恢复历史记录。
在本地(与 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 --hard
、git pull
,将其粘贴到最新的源代码中并执行新的提交,或者尝试使用 git 的 cherry pick 功能。
请注意,建议的解决方案只有在最近的推送没有覆盖 repo 历史记录时才可行(在使用 --force
参数推送的情况下可能会发生这种情况) 或者他们做了,但你还没有把它们拉下来。
另外,记得git是分布式VCS,所以在push with force和pull的情况下,可以尝试找你团队的同事,谁还没有从他的本地存储库中完成拉取和恢复历史记录。