为什么要检入称为“提交”的文件?

时间:2012-09-20 10:18:29

标签: git svn mercurial

检查源控制存储库(如git,mercurial或svn)中的文件的行为称为 commit 。有谁知道将其称为提交而不仅仅是签入的原因?

英语不是我的母语,所以它可能是一些语言我不太了解她,但我实际上是在做什么呢? (希望我不是犯罪,但你永远不会知道。)

它是否意味着“托付保存”?它与事务有关(在事务结束时提交)吗?

5 个答案:

答案 0 :(得分:14)

单词" commit"也可以意味着确保某些东西供将来使用或保存。例如,"他将密码提交给内存。"当你"承诺"你的更改,你现在将它们锁定,以便将来保存。

答案 1 :(得分:5)

还要考虑版本控制存储库是一种参考,例如数据库是参考文献 术语commit来自数据管理,使一组暂定变更永久化。
(注意,对于git来说很有意义,在使用git add在索引中添加暂定更改之前,使用git commit将其记录在回购中

  

在这些版本控制系统的上下文中提交是指将源代码的最新更改提交到存储库,并使这些更改成为存储库主版的一部分。
  因此,当其他用户从存储库中执行UPDATEcheckout时,他们将收到最新提交的版本,除非他们指定他们希望在存储库中检索先前版本的源代码。

答案 2 :(得分:1)

盲目地从我的mac lex中复制过来,不能充分解释它吗?

commit |kəˈmɪt|
verb ( commits, committing, committed ) [ with obj. ]
1 ...
3 (commit something to) transfer something to (a state or place where it can be kept or preserved): he composed a letter but didn't commit it to paper | she committed each tiny feature to memory.
• consign (someone) officially to prison, especially on remand: he was committed to prison for contempt of court.
• send (a person or case) for trial in a higher court: the magistrate decided to commit him for trial .
• send (someone) to be confined in a psychiatric hospital.
• refer (a parliamentary or legislative bill) to a committee.

答案 3 :(得分:1)

“签入”,“签出”术语至少可以追溯到1980年代初期的UNIX RCS(修订控制系统),其命令的字面意义为cico。在此系统和其他较旧的系统中,一次只能由一个用户编辑一个文件,因此“签出”类似于从图书馆签出一本书。在文件重新签入之前,您拥有编辑文件的专有权。

当CVS(并发版本控制系统)问世时,它保留了该术语,即使该系统是为并发编辑而设计的,也很少需要锁定文件。

但是对于像GIT这样的系统,您可以将整个目录树作为一组工作,并且每个人都有自己的存储库,并且在此处或那里发送提交(更改)方面具有极大的灵活性。您可以选择将一台服务器设置为中央存储库,但不必这样做。因此,签入或签出文件不再具有任何意义。更重要的是,git的作者选择放弃其系统的术语。

答案 4 :(得分:-4)

主要是区分集中式VCS(如Subversion)与分布式VCS之间的差异。集中式系统使用“签出”和“签入”术语。这些术语有助于表明存在一些控制这些操作的中央集线器或代理。它具有可以打开然后关闭的“保险箱”的内涵。当文件中涉及锁定时尤其如此,Subversion / TFS等也是如此。

DVCS更喜欢更多不可知的术语,如“提交”和“更新”,因为它举例说明这些操作中没有中央经纪人参与。

“签入”某些内容也会让人感到困惑,但仍然需要将其“推送”到远程服务器。 “签入”特别是在VCS中,它具有端到端流程的内涵。在DVCS中当然不会出现这种情况。

你可以在你的DVCS中创建一个名为“check in”的命令别名,它执行提交然后执行推送。例如。