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

时间:2016-03-10 07:34:35

标签: git svn github

我对git很新。如果我的问题愚蠢和错误,请原谅。

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

  1. 如果您的计算机在提交文件后崩溃,您是否会丢失刚刚提交但尚未推送的文件。
  2. 如果您尚未推送文件,那么其他开发人员将无法获得您在系统中创建并提交的更改[使用git pull]。
  3. 考虑到上述问题,那么为什么人们说即使你没有连接到互联网,GIT也能完美运行?在您推送新的/修改过的文件之前,您不确定您的文件是否安全,对吧?
  4. 我可以说, SVN的提交等于 GIT的推送
  5. 请分享您的想法并非常感谢您宝贵的时间。

2 个答案:

答案 0 :(得分:3)

  提交文件时,在GIT中

文件尚未移动到存储库

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

  

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

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

  

如果您还没有推送文件,那么其他开发人员将无法获得更改

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

  

为什么人们说即使你没有连接到互联网,GIT也能完美运行?在您推送新的/修改过的文件之前,您不确定您的文件是否安全,对吧?

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

存在版本控制系统以跟踪您所做的更改。理想情况下,您将提交的大小设置为仅包含一个特定(语义)更改,例如:一个功能,或一个错误修复,因此很清楚哪些更改彼此之间以及每个更改应该做什么。这正是分布式版本控制系统的帮助所在:您不需要访问Internet,也不需要访问远程存储库;您可以在小型提交中定期将这些更改提交到本地存储库,而无需关心您的Internet连接状况,服务器是否正常运行或需要多长时间。由于你是在本地提交的,所以它都是即时的,永远不会失败。

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

  

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

不,因为它们根本不同。 Subversion的commit接受您的本地更改,并将这些更改检入您的存储库 now 。您无法控制何时签入,并且您完全依赖Subversion服务器。

Git中的push只是将您在本地存储库中的现有提交传输到远程存储库。它是 fixed 和现有信息的交换,其完整性也是安全的。

答案 1 :(得分:1)

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

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

关于你比较SVN Commit和Git Push的最后一个问题,我会说是的,它们在概念上都是一样的。