我的问题在标题中,以下是帮助git专家回答我问题的细节。我本地回购的两个分支似乎变得“混在一起”:一些文件出现在一个从未出现过的分支上;许多文件已经完全消失了。我的理论是,同时使用两个git连接的应用程序(Github和Rstudio)导致了这个问题--下文将对此进行解释。
我有一个包含几个分支的git项目,让我们集中讨论branch1和branch2。在branch2/Applications中,我有数千个文件。branch1没有这样的应用程序文件夹。这是正常情况。
为了准备long-overdue提交并同步到远程,我在本地清理这个项目,主要是在branch2上(通过修改.gitignore并将一些文件移动到非git本地文件夹)。同时,我还使用Github在branch1和branch2之间来回切换,几次速度相当于每30秒一次。还打开了一个Rstudio项目(.Rproj),它位于我的repo的本地目录中。注意,这个.Rproj并不存在于branch1__上,但是当我在branch1和branch2之间反复切换时,文件仍然处于打开状态。
神秘的是,15000+上的大文件夹( Applications )Applications从文件系统中消失了。我关闭了Github和Rstudio,git进程在高CPU负载下运行了几个小时。我杀了这个过程。
目前令人费解的情况是:
branch2/Applications完全失踪了。为什么?我确实将它添加到.gitignore中,但据我的理解,它仍然应该出现在我的本地文件系统上。branch1/Applications现在存在。但是它只包含一小部分应该在15000+上的branch2/Applications文件。为什么?.Rproj文件还“跳过分支”。它现在出现在文件系统中,当branch1被选中时,虽然在今天的问题之前它是一个branch2文件。我的理论是,我切换的太快(或什么)之间的分支在Github,这不允许Rstudio的git监控“追赶”,并以某种方式本地回购被破坏。
Github和Rstudio是否有可能通过交互破坏本地回购?如果是这样的话,您对我应该如何继续尝试恢复大文件夹有指导吗?我不是git专家,但如果有人有想法,我可以研究命令。我不知道从哪里开始。
FYI大文件夹没有出现在最近的形式上的远程回购,因为它已经这么长时间以来,我上一次推动。所以我不认为我能从那里恢复过来。
发布于 2018-01-19 19:11:42
以下是我最后为恢复文件所做的工作。(请注意,我实际上不希望这些私有结果文件出现在公共git中,所以我所需要做的就是将它们写到某个磁盘上。)我运行了git log --raw --all,发现了每一行都有原始完整文件路径的缺失文件的完整列表,以及一个SHA。太棒了。然后我写了一个脚本,每一行都包含以下内容
git cat-file -p [SHA] > "/full/path/file.ext"这将文件类型恢复到它们的原始条件和子目录结构,包括基于文本的文件以及从pdf工作区中保存的tar.gz和R对象。
谢谢大家的帮助。最后,可能导致此错误的关键一步是,在切换分支时,我在Github中间中断了git进程,对15000+文件执行存储操作。我想这会让树枝被划掉。
https://stackoverflow.com/questions/48245811
复制相似问题