13

在 git、mercurial 或 svn 等源代码控制存储库中签入文件的行为称为提交。有谁知道将其称为提交而不是签入的原因?

英语不是我的母语,所以可能是一些我不太了解她的语言,但我真正承诺的是什么?(希望我没有犯罪,但你永远不会知道。)

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

4

5 回答 5

16

“提交”一词也可以表示确保某些东西以供将来使用或保存。例如,“他将密码提交给记忆”。当您“提交”您的更改时,您将它们锁定为现在它们以供将来保存。

于 2012-09-20T10:22:15.650 回答
5

还要考虑版本控制存储库是参考,就像数据库是参考一样。
术语提交来自数据管理,使一组试探性的更改永久化。
(请注意,这对 git 很有意义,您可以在其中使用 向索引添加临时更改git add,然后使用 将它们记录在 repo 中git commit

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

于 2012-09-20T10:36:52.187 回答
2

从我的macs lex中盲目复制,3没有充分解释吗?

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.
于 2012-09-20T12:21:20.643 回答
2

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

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

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

于 2020-04-28T05:31:07.227 回答
-4

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

DVCS 更喜欢“提交”和“更新”等更不可知的术语,因为它说明这些操作中不涉及中央代理。

“签入”某些东西也会令人困惑,但仍然必须将其“推送”到远程服务器。“签入”具有,尤其是在 VCS 中,它的含义是它是一个端到端的过程。这在 DVCS 中当然不是真的。

您可以在您的 DVCS 中创建一个名为“签入”的命令别名,该别名执行提交和推送。例如。

于 2012-09-20T15:36:03.293 回答