git - Linus Torvalds 说 Git "never ever"跟踪一个文件是什么意思?

标签 git version-control

当被问及 Git 在他的 Tech Talk at Google in 2007 期间可以处理多少文件时引用 Linus Torvalds (43:09):

…Git tracks your content. It never ever tracks a single file. You cannot track a file in Git. What you can do is you can track a project that has a single file, but if your project has a single file, sure do that and you can do it, but if you track 10,000 files, Git never ever sees those as individual files. Git thinks everything as the full content. All history in Git is based on the history of the whole project…

(成绩单 here .)

然而,当您深入研究 the Git book ,首先要告诉您的是 Git 中的文件可以是已跟踪未跟踪。此外,在我看来,整个 Git 体验都是针对文件版本控制的。使用 git diffgit status 时,输出是按文件显示的。使用 git add 时,您还可以根据每个文件进行选择。您甚至可以以文件为基础查看历史记录,速度快如闪电。

应如何解释此声明?在文件跟踪方面,Git 与其他源代码控制系统(例如 CVS)有何不同?

最佳答案

在 CVS 中,历史记录是在每个文件的基础上进行跟踪的。一个分支可能由各种文件组成,这些文件具有自己的各种修订,每个文件都有自己的版本号。 CVS 基于 RCS ( Revision Control System ),它以类似的方式跟踪单个文件。

另一方面,Git 对整个项目的状态进行快照。文件不被独立跟踪和版本控制;存储库中的修订指的是整个项目的状态,而不是一个文件。

当 Git 提到跟踪文件时,它的意思只是将其包含在项目的历史记录中。 Linus 的演讲并不是指在 Git 上下文中跟踪文件,而是将 CVS 和 RCS 模型与 Git 中使用的基于快照的模型进行对比。

关于git - Linus Torvalds 说 Git "never ever"跟踪一个文件是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55602748/

相关文章:

没有远程名称,git 无法第一次 checkout 分支

windows - git 克隆的权限被拒绝

version-control - 您如何在生产服务器上的 Web 项目上应用补丁?

svn - 在哪里管理您在版本控制下的最敏感内容?

git - 如何让 git 接受自签名证书?

git - 我可以推送在分离的 HEAD 状态下进行的提交吗

android - 从 Android Studio Gradle 项目的 GIT 中排除的文件,以维护 MAC 和 Windows 中的代码。

visual-studio-2010 - Visual Studio 2010 在 git pull 后关闭打开的文件

Git 工具用于从暂存中删除仅包含空白更改的行

git - .git/info/grafts 有什么用?