其他版本控制和 GIT 之间的细微差别



我对git很陌生。因此,如果我的问题愚蠢和错误,请原谅我。

通常在SVN等其他版本控制中,一旦提交文件,它就会在存储库中安全。但是在 GIT 中,当您提交文件时,该文件尚未移动到存储库。相反,该文件仅驻留在本地计算机中。[这是我的理解,如果我错了,请纠正我]。我的问题是

  1. 如果您的计算机在提交文件后崩溃,您是否不会丢失刚刚提交但尚未推送的文件。
  2. 如果您尚未推送文件,那么其他开发人员将无法获得您在系统中所做的更改[通过使用 git pull ]。
  3. 考虑到上述问题,那么为什么人们说即使你没有连接到互联网,GIT也能正常工作呢?在你git推送你的新/修改的文件之前,你不确定你的文件是安全的,对吧?
  4. 我可以说,SVN的提交等于GIT的推送吗?

请分享您的想法,并非常感谢您宝贵的时间。

在 GIT 中,当您提交文件时,该文件尚未移动到存储库

这并不完全正确。您必须了解您有一个本地存储库。因此,当您提交更改时(请注意,我们提交更改,而不是文件),该更改/提交将移动到存储库:移动到本地存储库。是的,它还没有在远程存储库中,但这完全是设计使然。您可以决定何时将其推送到其他地方,或者是否要允许其他人甚至拉取它(通过授予他们访问您的本地存储库的权限)。

如果您的计算机在提交文件后崩溃,您是否不会丢失刚刚提交但尚未推送的文件。

取决于崩溃的类型:如果您丢失了硬盘,那么这可能是真的。在其他情况下没有;您仍然可以访问本地存储库,并且提交安全地存储在那里。

如果您尚未推送文件,则其他开发人员将无法获得更改

是的,这是设计使然。提交和共享更改是分开的。

为什么人们说即使你没有连接到互联网,GIT也能正常工作?在你git推送你的新/修改的文件之前,你不确定你的文件是安全的,对吧?

因为版本控制系统不是备份存储。是的,您可以将其作为一个整体使用,但这只是一个副作用。如果您将其用作备份,则很可能以错误的方式使用它。

存在一个版本控制系统来跟踪您所做的更改。理想情况下,提交的大小使它们只包含一个特定的(语义)更改,例如一个功能或一个错误修复,因此很清楚哪些更改彼此相关以及每个更改应该做什么。这正是分布式版本控制系统的用武之地:您不需要访问互联网、远程存储库;您可以定期将这些更改以小的提交方式提交到本地存储库,而不必担心您的互联网连接情况、服务器是否启动或需要多长时间。由于您在本地提交,因此一切都是即时的,永远不会失败。

只有当您完成某些操作并想要发布它时,您才会将其推送到共享的远程存储库。

我可以说,SVN的提交等于GIT的推送吗?

不,因为它们根本不同。Subversion 的commit接收您的本地更改,并立即将它们签入您的存储库。您无法控制何时签入什么,并且完全依赖于 Subversion 服务器。

Git 中的push只是将本地仓库中的现有提交传输到远程仓库。它是固定和现有信息的交换,其完整性也得到了保证。

Git 是一个分布式版本控制平台,它不需要一个中央的始终在线的远程存储库来工作。

所以你的前三个问题的答案是肯定的。其他开发人员不会看到您对代码的提交和贡献,直到您先提交它们然后推送。

关于

你关于比较SVN提交和Git Push的最后一个问题,我想说是的,它们在概念上是一回事。

相关内容

最新更新