【git】- 为什么选择git ?

【前言】

       常听一些前辈在分享时提起git,可见git目前市场很火热,那么它是什么东东呢?前辈项目开发时,为什么会选择git而抛弃svn 呢? 且听我细细道来,亲爱的你一定要耐心看完!

       【git】- 为什么选择git ?_第1张图片

 【选择git的三大理由】

    1.  分布式 VS  集中式  —支持离线工作

           集中式版本管理工具架构:

          【git】- 为什么选择git ?_第2张图片 

           svn 是集中式的版本管理工具,项目相关的所有代码统一的由一台中央服务器集中管理。其他系统/开发人员如果想得到代码,必须从这一台服务器上拷贝。同样,其他系统/开发人员想要提交代码,也只能向这台服务器提交。这台服务器起到了一个集中管理所有代码的作用,当然,如果svn的中央服务器出现故障,那么后果不堪设想。

           分布式版本管理工具架构:

           【git】- 为什么选择git ?_第3张图片

           git 是一款分布式版本管理工具,代码可以由自己本地服务器来管理。因为每个系统本地都有一个本地代码仓库(相当于远程仓库在本地的备份),本地系统可以先把代码提交到本地代码仓库,然后再由本地代码仓库提交到共享版本库(在这里,共享版本库就相当于集中式管理系统的远程代码仓库)这样在本地系统和共享版本库之间添加了一层本地代码库,开发人员直接和本地代码仓库打交道,减轻了对共享版本库的压力,并且也降低了开发人员因为误操作而导致对远程代码仓库的污染。

            正是因为二者的这个区别,通过分布式,我们可以在没有网络的情况下,先把代码提交到本地代码仓库,速度之快不言而喻,逮到有网络的时候再提交到共享版本库。而如果通过集中式,我们不能在没有网络的情况下把代码提交到远程代码仓库,即使是有网络,频繁的传输对于中央服务器的压力比较大,并且每次传输都要受限于网络速度。

    2.   git支持强大的分支和合并   

             分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。

              然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

              Git的分支名是可以使用不同名字的。例如:我的本地分支名为OK,而在主要版本库的名字其实是master。
              git merge能够自动记住以前merge过的位置和状态,因为通过每个分支的head commit可以跟踪它的对象索引关系;SVN 的Merge操作不会记住它的merge历史。

         最值得一提,我可以在Git的任意一个提交点(commit point)开启分支!(其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开启分支。)

      克隆一份全新的目录以同样拥有五个分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作。而Git只是获取文件的每个版本的 元素,然后只载入主要的分支(master)在我的经验,克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!而Git只用了区区的1分钟! 

    3.  通过git来了解github 

        GitHub是程序员必备技能,2008年4月10日,GitHub正式成立,地址:https://github.com/,主要提供基于git的版本托管服务。一经上线,它的发展速度惊为天人,截止目前,GitHub 已经发展成全球最大的开(同)源(性)社区,github的出现使得除美国以外的国家的计算机水平差距和美国拉近了将近20~30年!!!

   【git】- 为什么选择git ?_第4张图片      【git】- 为什么选择git ?_第5张图片

         GitHub 主要是提供基于git的版本托管服务,也就是说GitHub上托管的项目代码都是基于Git来进行版本控制的, 但是github的功能远不止此:

          1.  学习优秀的开源项目

          2. 多人协作 

          3. 个人简历   

            如果你有一个活跃的 GitHub 账号,上面有自己不错的开源项目,还经常给别的开源项目提问题,push 代码,那么你找工作将是一个非常大的优势……

            GitHub 有一个叫做“fork”的功能--用户可以直接把别人的代码复制一个属于自己的分支,这样你就可以更直接把别人的代码用在自己的项目里;而且别人也可以参与这些代码的改进。比如某一天硅谷的一个程序员开发了一个图片存储的小工具,当天晚上,程序中的某个bug可能就被地球另一边的某一个中国的程序员修复了。可见,GitHub除了提供对源代码的存储和复杂的版本控制外,还极大的加速了代码的传播速度,这些都是当年的“CVS”和现在很多人仍旧采用的“SVN”所不能比拟的。

【总结】

          读了小编的这篇文章,你是不是已经等不及注册一个github账号玩一下了??

你可能感兴趣的:(【版本控制工具】)