git开发人员为什么选择单词checkout作为命令gitcheckout



我试图理解git开发人员为什么选择单词"结账";对于命令"0";git结账";。将单词checkout翻译成葡萄牙语(我的母语)并不能澄清术语"checkout"的含义;结账";。虽然我理解这个命令对我的git项目的影响,但如果这个命令是git abrakadabra,对我来说听起来也一样

签出文件的想法并非源于Git。

在英语中(至少),当你从图书馆借书时,据说你会";"结账":你从图书馆拿了这本书,答应以后还。当你有这本书的时候,没有人可以使用这本书,因为图书馆已经没有这本书了。

其他源代码管理系统的工作原理类似。签出文件意味着只有您才能编辑该文件。任何其他试图签出文件的人都必须等到你签回才能编辑它

这种类型的独占访问不适用于Git(作为一个分布式源代码管理系统),但该术语被保留来描述从存储库中选择一个分支来填充工作目录的想法(实际上,一次签出许多不同的文件进行编辑,直到您通过签出另一个分支"放回"为止)。

我将从我的原型书中复制一点。这个术语并不是Git特有的(正如chepner已经说过的)。

因此,[版本控制系统或]VCS以某种方式充当源文件的数据库检索文件的特定版本。此数据库称为存储库。添加源文件的更新版本时,数据库会将更新后的源存储在存储库中。文件的每个版本也被称为修订版,因此,如果您修复了拼写错误并将更新后的文件输入到存储库中,您现在就有了该文件的另一个修订版。

作为动词,to version的意思是置于VCS的控制之下。作为名词,version表示取自VCS(一个文件或一组文件)的特定版本。通常名词形式带有附加修饰语,如短语旧版本的kanga.croo.c的2.1版本。如果没有列出特定的文件,我们通常指的是所有内容,或者至少是最近讨论的所有内容:2.1版(存储库中的所有内容,或我们谈论的特定文件和/或目录)。单词修订始终是一个名词,但在其他方面的含义与版本相同。

另一个动词用于签入,意思是存储到VCS中。正如您所料,如果我们可以签入,我们也可以签出。这意味着从VCS中提取。一些VCSE添加动词以更新,他们可能会使用该动词来区分提取旧版本(您检查)和向上移动到最新版本和(我们希望)最新版本(您更新pdate作为checkout的纯同义词。

签入有时会连字符(报到),或写成一个词,检入。这些避免了歧义:我将签入roo.c(查看代码以查看是否有小袋鼠进入),而我们将签入roo.c以存储新修订版Check-out通常被写成一个词,Check-out,或连字符,但动词形式仍然是Check-outheckouting好得多。

较新的VCSE添加了更多的名词和动词词:

  • 提交签入的含义大致相同,但稍后我们将看到一些技术差异。作为一个名词,a commit也指一个版本,但特别是一个由commit的动词形式存储的版本
  • 克隆基本上是一个奇特的术语,用于复制整个存储库,通常是通过计算机网络从不同的机器复制,例如从网站复制。作为一个名词,克隆是通过克隆而产生的repository
  • 分叉在功能上与克隆相同,但通常与不同的意图。因此,名词形式a fork与克隆体相同,但制作fork的人可能希望他们的工作在很少或没有重新同步的情况下(可能永远或在有限的时间内)出现分歧,和/或其他人通过他们的fork而不是原来的fork进行合作

针对Schwern关于rcs corcs ci的评论,值得注意的是一些历史项目:

  • RCS的checkout谓词默认情况下没有锁定(版本存储)文件:它在工作树中为您提供了一个只读文件。你必须使用co -l来获得一个锁,它为你提供了一个可以更新的读/写文件。

  • RCS的coci标注了SCCS的签出/签入日期。然而,在sccs中,我们有两个独立的提取动词:get意味着获得只读副本edit意味着锁定文件并获得读/写副本

RCS,我认为,是第一个使用今天仍然存在的术语的版本控制系统。它的动词一直存在于CVS(并发版本系统)和Subversion("CVS做得更好")中,并从那里传播到所有现代版本控制系统中(参见维基百科中的一个相当大的表)。现代SCCS是早期Unix SCCS的重新实现,其本身可能最松散地基于在此之前的IBM SCCS。

最新更新