移动git工作副本,不再检测到更改

时间:2015-03-16 23:23:04

标签: git

所以我的工作副本中有未提交的更改。我的磁盘空间不足,所以我将工作副本移动到另一个卷。现在git不承认有提交的更改。不知道我应该如何解决这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

好的,让我们对我们掌握的一点信息后的想法进行总结:

如果你真的通过只复制它的一部分(为什么)来破坏克隆,那么它已经被破坏,没有魔法巫毒按钮可以解决这种数据丢失。但我怀疑这是问题,你的描述不适合,在这种情况下,人们会期望git抱怨或至少指出丢失或更改的文件。如果我的评论正确,那么git只是没有显示任何本地修改,所以声称没有。

其次,如果真的以某种方式git失去了对某些文件的控制权,这些文件确实具有本地修改(无论这意味着什么......),那么有一件事你可以尝试恢复至少部分更改:制作第二个克隆来自其他一些最新位置的存储库(请记住:在git中没有"服务器"充当中央存储库,只有眼睛级别的克隆)。现在将文件从你想要破坏的克隆复制到新的文件,但只能在git控制下的那些文件,所以源文件,图像等。如果存在差异,新的git clone现在应该显示本地修改。只需使用diff工具来比较两个克隆文件,即可获得相同的洞察力。但同样:我怀疑这是你的问题。

相反,我的印象是你并没有真正失去任何东西,但却根本没有意识到这种情况。我想到了两个可能的方面:

  1. 也许你在移动之前,期间或之后不小心切换到另一个分支?在这种情况下,您现在正在显示该分支的状态,而不是之前的状态。如果您然后切换回前一个分支,您将再次看到您的修改。

  2. 这实际上是我猜测这里发生了什么:一切都很好,你有本地修改并提交了它们,但你没有将它们推送到其他存储库。在那种情况下,git确实没有显示任何本地修改,没有。 但是在这种情况下,您的克隆具有不同的日志(历史记录):它显示本地存在的提交,但不存在于其他克隆(存储库)中。在这种情况下,您所要做的就是推送这些提交!

  3. 如果我在这些行之间阅读,我会说你以前一直在使用像Subversion或CVS这样的集中式修订控制系统,因为你正在使用他们的术语("工作副本")。 git与那些不同,它有不同的概念,在切换时确实令人困惑。我自己很困惑;-)但是gits方法确实很有意义。它提供了更多的可能性,功能,灵活性和稳健性。所以投资这个开关在我眼里是值得的。

    那么, 你的情况是什么?检查您的分支,提交日志并将其与其他克隆(存储库)进行比较。我希望这是我描述的最后两个方面之一。因为在这种情况下,你把一切都弄好了,没有任何东西丢失,今天太阳对你微笑: - )