我的问题在标题中;这里是帮助git专家回答我的问题的细节。看来我的本地仓库的两个分支已经“混乱”了:有些文件出现在他们从未上过的分支上;许多文件完全消失了。我的理论是同时使用两个git-connected应用程序(Github Desktop和Rstudio)引起的问题 - 解释如下。
我有一个包含多个分支的git项目,让我们关注branch1
和branch2
。在branch2/Applications
我有成千上万的文件。 branch1
没有此类“应用程序”文件夹。这是正常情况。
要准备长 - 过期提交并同步到远程,我正在本地清理此项目,主要是在branch2
上(通过修改.gitignore
并移动一些文件到非git本地文件夹)。与此同时,我正在使用Github Desktop在branch1
和branch2
之间来回切换,有时会每30秒一次快速切换。生活在我的repo本地目录中的Rstudio项目(.Rproj
)也已打开。 注意,这个.Rproj
在branch1
上不存在,但是当我使用Github在branch1
和branch2
之间来回切换时,文件保持打开状态。< / em>
神秘的是,Applications
上的大文件夹(15000+个文件)branch2
从文件系统中消失了。我关闭了Github和Rstudio,git进程在后台以高CPU负载运行了几个小时。我杀了这个过程。
目前令人费解的情况是:
branch2/Applications
完全缺失。为什么?我确实将它添加到.gitignore
,但我的理解是它仍应出现在我的本地文件系统上。branch1/Applications
现在存在。但它只包含应该在branch2/Applications
上的15000+个文件中的一小部分。为什么?.Rproj
文件也“跳过了分支”。它现在出现在文件系统中,当在Github中选择branch1
时,虽然在今天的问题之前它是branch2
文件。我的理论是我在Github的分支之间切换太快(或者其他东西),这不允许Rstudio的git监控“赶上”,并且不知何故本地仓库被破坏了。
Github和Rstudio是否有可能进行互动以破坏当地的回购?如果是这样,您是否有关于我应该如何继续尝试恢复大文件夹的指导?我不是一个git专家,但如果有人有想法,我可以研究命令。我不知道从哪里开始。
仅供参考,大型文件夹没有出现在远程仓库的最新表格中,因为自从我上次推送以来已经很久了。所以我认为我不能从那里恢复它。
答案 0 :(得分:0)
这是我最终要做的还原文件。 (请注意,我实际上并不想在公共git仓库中使用这些私有结果文件,所以我需要做的就是将它们写到磁盘的某个地方。)我运行了git log --raw --all
并找到了看起来完整的内容每行包含原始完整文件路径的丢失文件列表,以及SHA。太棒了。然后我写了一个脚本,每行包含类似
git cat-file -p [SHA] > "/full/path/file.ext"
此恢复的文件类型为其原始条件和子目录结构,包括基于文本的文件以及pdf
,tar.gz
和R
个对象,这些对象已从{{ 1}}工作空间。
感谢大家的帮助。最后,可能导致此错误的关键步骤是我在Github Desktop中间中断git进程,在我切换分支时对15000+文件执行存储操作。我认为这导致git分支被克服。