-1

所以,我对 git 有一点经验。所以我一直在使用GitKraken来利用 git 的特性。我相信我在某个地方搞砸了,并且失去了数周的工作。我暂存了一些文件并进行了提交,只是意识到,我不想在一次提交中暂存所有文件。所以我所做的是右键单击提交,它要么恢复更改,要么删除提交或类似的东西。所以我这样做了,以为我只是在修改 git repo。然后我在没有当前文件的情况下检查了我的主分支。现在我不确定是哪个操作删除了我的文件,但它们现在不见了。我认为签出一个分支不会弄乱未跟踪的文件,所以我认为这是一个安全的操作......

帮助!;_; 我什至从哪里开始弄清楚如何恢复这些丢失的文件?

4

1 回答 1

2

如果更改已提交,但随后您恢复了该提交,则将创建一个恢复提交,其中包含删除所有文件的更改。如果是这种情况,您可以先尝试键入以查看分支git log头部提交背后的提交历史。master可以通过运行签出此列表中的所有内容以返回到该版本,您看到的提交的十六进制哈希git checkout a1b2c3d4...在哪里。a1b2c3d4...在不查看日志的情况下返回分支中上一次提交的另一种方法是只需键入git checkout @~or git checkout HEAD~

如果您在分支的日志中找不到任何内容,您可能还没有创建恢复提交,并且以某种方式以不同的方式重置了分支,一个可能的解决方案是使用git reflog. 这应该显示提交的十六进制哈希列表,您可以按照与前面提到的相同的方式检查这些哈希。reflog 包含您在本地工作树中签出的每个提交的列表,即使它们跨越不同的分支,或者在使用git reset.

如果您找到了包含您想要的所有内容的提交,请记下其十六进制哈希,然后master再次使用签出git checkout master,然后运行git reset --hard a1b2c3d4...​​,a1b2c3d4...您想要的提交的哈希在哪里,这将master带回该状态。

如果您无法在提交日志或 reflog 中找到包含所有文件的提交,那么很遗憾,您可能无法使用 git 恢复您的文件,如果您从未真正进行过提交,就会出现这种情况,并且 GitKraken 已清理并完全从您的工作树中删除分阶段的更改。此时,您将不得不在其他地方寻找恢复选项,例如:

  • 备份
  • 您的文本编辑器/IDE 的交换 文件文件历史记录
  • 文件恢复软件针对您的文件系统运行,就好像您刚刚删除了一些文件,没有使用 git,也没有任何备份
于 2017-03-15T16:11:56.780 回答