4

我想知道 GIT 在进行本地提交(提交命令)时与在离线工作(未连接到服务器)时仅将更改保存在 SVN 中的工作目录中相比有什么区别(或者说优势)

我读过 GIT 具有离线工作的优势,即用户可以在本地执行任意多次提交,然后当用户连接到服务器时,他可以将更改推送到远程服务器。我想知道为什么如果所有提交命令都只是提交到本地磁盘,这再次与将更改保存到 SVN 中的磁盘(未与服务器连接时)而不提交到项目分支相同。

我喜欢 GIT,但我无法理解这种差异。请帮忙 !!

谢谢,纳扬

4

4 回答 4

13

场景:您在离线之前将存储库中的最新代码下载到您的笔记本电脑上(比如长途飞行)。

在飞行中你做了一些改变——你运行单元测试,运行代码,一切似乎都在工作。您进行了更多更改 - 测试它们,事情仍然有效。您会变得非常热情,并通过一些重度重构进行更多更改。您测试更改 - 一切都被破坏了(例如,因为您在某处做出了错误的假设)。

使用 SVN:将代码恢复到工作状态会很棘手,因为在开始所有繁重的重构之前,您不记得它的样子。每当您再次获得网络访问权限时,您的笔记本电脑上的代码和主服务器之间的代码可能会出现很多繁琐的差异。与此同时,你被困住了。

使用 Git:假设您是明智的,并且每次您知道本地存储库处于工作状态时都将更改提交到本地存储库,那么在您开始重构工作之前回滚到提交是很容易的。您保留了宝贵的工作,并可以立即开始走上正确的道路。当您再次获得网络访问权限时,您可以一次性将这些更改推送到主分支,一切都会好起来的。

于 2012-04-12T12:35:42.943 回答
5

提交不会将文件保存到磁盘,您不需要任何版本控制软件。

在版本控制中提交意味着在文件历史记录中保存一个新增量,以便您可以记录和恢复不同的状态。然后 Git 和 SVN 不同,因为这一步是在本地执行的,没有任何远程服务器通信,与 SVN 不同。

在离线模式下使用 SVN 时,您无法发出任何提交,因此您的工作历史不会被记录,尽管它会保存到本地磁盘。Git 并非如此。

于 2012-04-12T12:16:48.123 回答
2

通过提交,您将代码存储在版本控制中,而不仅仅是保存到磁盘。这使您可以真正管理您的代码和项目,因为它的增长。

Git 还允许在整个项目生命周期中创建任务分支,使您能够保持一个始终工作的主代码库(在服务器上)、一个在本地工作的主代码库,然后您可以在实施时分支此主代码新功能和所有这些之间的交换。无需像在 SVN 中那样将代码“提交”到服务器以确保其安全。

通过在本地提交和分支,这使您能够有效且安全地离线工作。SVN 要求您将这些更改提交到服务器,以确保它们是安全的。Git 是去中心化的。

我相信当您研究 Git 的功能并更多地使用它时,您会回答自己的问题。然后如果你回到 SVN,你会希望你在 Git 上;)

希望这可以帮助。

于 2012-04-12T12:22:40.563 回答
1

在我的头顶上:

  1. 离线版本控制(无需与远程存储库通信以保存工作进度)。
  2. 任务切换更容易分支和合并。
  3. 更复杂的合并......减少了合并的痛苦。
  4. 跟踪工作进度,而不会强迫团队的其他成员接受不完整的状态。
于 2012-04-13T12:56:10.797 回答