Discuss / Git / 关于Git的优势 和 断网工作的区别

关于Git的优势 和 断网工作的区别

Topic source

我是这么理解,这里有几个概念:本地、服务器、中央服务器(远程服务器)。每一次

commit是提交到本本机的服务器,这个不需要联网,正所谓的版本管理,就是要方便我

们知道每一个版本,比如回到之前的某个版本(这是其一),而且回退到某个之前的版

本,也是从本机的服务器拿的数据,这些都不需要联网。而 SVN 的每一次 commit 都需

要联网,这就需要网络的等待。 Git只有在Push、pull 的时候需要联网,而我们平时更

多的操作应是commit。

再有就是,断网的情况下,SVN也能工作,但是由于没有版本控制的记录,当多人修改

后就比较难以快速的合并,但是Git都在本地保存了版本记录,所以大家合并起来就方便

得多了。

这个讲的比较清楚,不同人之间相互传递版本也是需要联网的吧

那也就是说其实git和svn都是可以在断网情况下工作的,且不管是分布式还是集中式都是存在中央服务器概念的。svn每次的commit是提交到本地,然后本地记录了自己每次的提交历史记录;而svn的每次commit都是要提交到中央服务器的。那么如果git和svn的许多用户都修改了文件,需要向中央服务器提交新的记录(svn是commit,git是push),此时不是都需要合并所有用户的代码吗,到这的结果都是一样的。 只是说分布式在本地保存了版本记录,用户可以不联网就回溯到历史版本,这个是集中式所没有的。那这样的区别其实在某些场景下是不重要的。这样理解对吗?本人小白,希望大神指点。

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

断网的情况下,SVN不工作,既不能提交也不能回滚。

恍然大明白了。 使用svn的时候,我们检出了2.0的版本到本地,断网情况下,想要看看1.0代码或者提交2.1代码都做不到。 而用git会把所有版本信息下载到本地,我们在自己的电脑上就可以做到版本回退或更新。

我以前一直用svn习惯于修改一个bug或添加一个小功能测试无误后就提交上去。这种频繁提交的习惯是不是和git的先进性有冲突呢,是否需要改变这种编程习惯?一个优雅的使用git的程序猿是怎么做的呢?

@忘记翅膀的猫_538 Git 推崇的是频繁且详细描述的提交,而不是确认无Bug才提交。

黯夜旋风

#7 Created at ... [Delete] [Delete and Lock User]

我的理解:断网了不管是git还是svn都失去作用,svn不能提交、更新或检出,一切操作都是单机操作,svn完全失去作用;git有本地仓库,可以提交到本地仓库(本地服务器),本地每次修改提交都有备份,但也是单机,直到连上网,才能推送到远程仓库(远程服务器),其他人才能共享到。各位大佬请指正。

@我是暴脾气暴脾气 SVN和Git的最大区别在于版本库或者版本控制的位置在中央服务器还是本地电脑(泛指,可以是本地的任意电脑)。

1. 都可以在断网的情况下工作?

如果是一家小公司,SVN服务器就在局域网内,SVN的确可以在断网情况下工作。但是对于中大型公司,SVN服务器一般是独立出来的,不在局域网内的,你完成计划的工作内容,需要提交做成一个版本,但是由于版本库是在中央服务器,于是你要等网络联通之后,才可以提交。因此对于SVN服务器不在局域网内的情况下,断网是不可以使用的。

Git版本库在本地,在完成计划的工作内容后,不管是否联网,都不会影响在本地做成一个版本。

2. 分布式还是集中式都是存在中央服务器概念?

不是的,Git没有中央服务器。中央服务器SVN是用来做版本控制的。Git的版本控制在本地,所以没有中央服务器一说。而Git要多人合作时,可以选择把自己修改的内容即某一版,推给其他合作者,然后其他合作者将该版本合并到自己的修改里,然后在把自己合并后的新版推给其他合作者,这样10个人的团队,假设,每个人都把自己的修改推给其他人,共推了90次,耗时,耗带宽,不如统一规定把修改推给某台设备,这样只修要推10次。

3.Git每次的commit是提交到本地,然后本地记录了自己每次的提交历史记录;而svn的每次commit都是要提交到中央服务器的。那么如果git和svn的许多用户都修改了文件,需要向中央服务器提交新的记录(svn是commit,git是push),此时不是都需要合并所有用户的代码吗,到这的结果都是一样的。 只是说分布式在本地保存了版本记录,用户可以不联网就回溯到历史版本,这个是集中式所没有的。那这样的区别其实在某些场景下是不重要的。这样理解对吗?

关于代码合并,Git和SVN的合并好像没什么区别。 关于区别,回复的内容首部就说了SVN和Git的最大区别在于版本库或者版本控制的位置在中央服务器还是本地电脑。

以上


  • 1

Reply