我不清楚git应该如何工作。我查看了官方文档和许多教程,但我没有看到这个问题的答案。
如果您有想要处理的新功能或错误修复,并且为此目的创建了分支,那么在您的工作正在进行时,您应该对临时文件做些什么? Git只保存'快照'各种版本的工作文件。但是,为了查看您的编辑是否有效或值得保留,您必须对它们进行测试。并且您无法通过操作系统将它们保存到磁盘中来测试它们。一旦您保存了这些文件,它们就不是快照',那么一旦磁盘上的文件永久地“保存”,git如何保存或恢复任何原始条件。保存以便运行和测试?
必须有答案,但我还没有找到答案。我发现的唯一一个教程,即使操作系统保存的参考文件是http://ryanflorence.com/git-for-beginners/,也只是参考合并冲突。
答案 0 :(得分:1)
您可能会将提交与硬盘保存混为一谈。您无法保存已经保存的内容,这在任何VCS中都是如此;你不能对尚未写入文件的东西进行版本化。
Git实际上会考虑将哪些内容更改为snapshot,因为您从一个可能较大的初始文件开始,但Git只会忘记跟踪发生的更改版本之间。如果触摸了文件的一部分,则只更新文件的那一部分。
这是来自a repository I'm working on的示例。我使用IntelliJ,所以大胆的SHA是最近的变化。
如果我想将文件移回特定点,我可以。请注意,自11月以来有很多事情没有改变(自5月以来存在一些变化),但从那以后有一些明显的变化。这就是保存快照而不是整个文件版本的含义。如果我想重新引入该文件的版本,就像它在5月14日那样,我需要指示Git查看5c5f896b。
您看到的最终结果是该时刻的整个文件。这意味着它可能是过去几个月(或几年)内所有提交的混合。它仍然是 快照,因为它只会考虑对该文件的最新更改。
... Git认为其数据更像是一组微型文件系统的快照。每次你在Git中提交或保存项目状态时,它基本上都会记录当时所有文件的外观,并存储对该快照的引用。为了提高效率,如果文件没有改变,Git不会再次存储文件,只是指向它已存储的上一个相同文件的链接。 Git认为它的数据更像是一个快照流。
您进入Git的次数越多,您就会发现这种方法可以让它返回到已知的工作状态",或者在同一个存储库中保留相同代码的多个版本。在大多数情况下,您会发现这个with a bit of reading和一些hands-on exercises。