版本控制介绍以及常用的版本控制工具

旧街凉风 提交于 2020-01-28 20:02:12


IT这个行业的小伙伴们分享一下个人对版本控制工具的理解:

作用一,备份用

是的,代码需要备份的,这可能是版本控制工具的一个比较弱的功能,但真的很管用。程序员每做一步功能性的更新和迭代,都需要备份一次,这是一个很好的习惯,而在版本控制工具中你不需要再复制和粘贴,产生大量的代码冗余,你只需要提交一次到服务器中就可以了,注意,千万别写好几个功能后再一次提交,这并不是一个非常好的习惯,刚入行的程序员往往很容易范这个问题,一提交就好几个功能集中在一起提交。之前小编范过这个问题,提交的功能,有几个要留下有几个要弃用返回到之前的一个时间点,而这些功能错综复杂的交互数据,使这项工作施行起来要多复杂有多复杂。吃了这次教训后,才知道版本控制的重要性。

按功能提交代码的好处很多,一来,可以知道哪次提交的具体功能,方便测试的同学单元功能测试。二来,是业务上的需求,可以方便找回之前的代码,因为可能需求改来改去,感觉还是以前写的功能好,需要回到以前某个时间点上,你只需要找一找那次提交的状态码,一条命令就可以回到那个时间点,而这个场景在实际开发中是经常遇到的。这时的版本控制工具就类似时间机器,可以让你的代码和网站很方便地返回去。

作用二,协调开发用

这个功能算是版本控制器的主要功能,开发一般很少有像ruby语言一样,一个人做一套系统,大部分的公司的开发团队少则十几个人,多则上百。当多个人共同开发一套系统的时候,你改一部分,我改一部分,肯定有代码冲突的地方,当多个人同时改了一个文件,这么多人,每个人改哪一块了?最终以谁的代码为准?如何处理这种场景下的代码冲突?这就是版本控制的协调开发作用,这在没有工具之前是非常麻烦,你需要打开至少两个窗口,一行一行的比较。

十年前在第一家软件公司做开发的时候,公司用的是svn做版本控制,当时还没有git,当时市面上比较流行的是cvs和svn这两款,两个差不太多,随便用一款就行。我们向服务器提交的代码如果有冲突的时候,系统会以红色的代码块来做标记,提示我们需要更改,正常无冲突的代码是绿色的。

而git是以多个左尖号来标注冲突的代码,凡是有改动的,均会以这种方式来注明。解决git冲突的办法就是把有尖号这一行删除,保留想要的代码块就可以了,具体长什么样子可以看下图。

 

版本控制工具的选择

CVS、SVN、Git是当下被广泛认可的版本控制工具,SVN是集中式的管理,git是分布式的。版本控制工具不像现在开发的框架一样,各有千秋,各有优势,现在基本上大部分新兴团队都会选择git做为代码管理的工具,而服务器部署来说,git也是非常方便的。

git功能很多,可以完成不同的业务场景需求,但我们团队用的时候并没有那么复杂的用,对于前沿的开发人员来讲,可能最多用到的就是四条命令,git pull和git add 和 git commit -am 以及git push,这四条命令几乎占了操作的很大的一部分。而技术经理一般就负责审核、合并以及处理冲突,所以要用到更多的命令。

小伙伴们,你们现在是用的什么版本控制工具?Git?还是SVN?

本文由木易小光原创,欢迎关注,带你一起长知识!

---------------------------------------------------------------------------------

版本控制介绍以及常用的版本控制工具

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

编写一个成熟可用的程序是一个工作量很大的工程,并非我们一次性就可以搞定的工作,所以在开发过程当中需要:

      1、  多人协作

              随着对程序体验的需求的提高,一个程序需求的编程知识和模块也在增多,这种情况下让一个程序员同时掌握多门技术是不好实现的:

              1、掌握的难度大,开发的成本高(比如:一个大牛的工资)

              2、开发效率高,一个人开发的效率是不行的

              所以,我们在工作当中大部分讲究的是协作开发,我们以项目需求的技术模块进行团队的组合。

              比如:开发一个web项目:如果要招聘一个web大牛,前端、后端、运维服务器都很牛的大牛,薪资高先不说,人也不好找啊。并且一个大牛的开发效率

              和开发压力也很大。所以我们会形成一个开发的团队,找前端开发工程师,后端开发工程师,运维工程师,数据库工程师来完成这个艰巨的任务。

       2、  版本迭代

              就好像一个美术家要完成一件作品,并不是一蹴而就的,好多时候是经历过多次修改的过程,我们编程也是一样的,当然这个修改要有原则,并不是推

             倒重来的过程(当然前期无药可救的不算),而是有简单的一个完整的框架开始,然后不断优化升级的过程,这个过程就是版本迭代。

那在这个过程当中,我们需要对代码进行管理,比如:提交、检出、回溯历史、冲突解决、多人协作。那这些需求也就衍生出了我们要学习使用的版本控制工具。

各个公司由于开发的需求和其他因素用到的版本控制工具不都相同,这里我们介绍几种使用较多的版本控制工具。

        Cvs:  是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到

        保证文件同步的目的。是一种很古老的版本控制工具了,但是是很典型的集中式版本控制工具

        SVN: 是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。可以说是集中式版本控制的集大成            者。

        Git:   是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。是一种分布式的版本控制工具

        GitHub:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

 上面介绍了我们常用的四种版本控制软件,但是也要给大家解释两个概念:

分布式版本控制:分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推

送合并到另外一个代码仓库中。

集中式版本控制:只有一个中央控制,所有的开发人员都必须依赖于这个代码仓库。每次版本控制的操作也必须链接到服务器才能完成。

所以很多公司喜欢用集中式的版本控制是为了更好的控制代码。如果个人开发,就可以选择Git这种分布式的。并不存在那个更加好或者其他的。

 

---------------------------------------------------------------------------------

SVN全名Subversion,即版本控制系统。
SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。

---------------------------------------------------------------------------------
git和github是两个完全不同的概念。

git     

       是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。

关于github,这是一个网站,就是每个程序员自己写的程序,可以在github上建立一个网上的仓库,你每次提交的时候可以把代码提交到网上,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码,这种开源的方式非常方便程序员之间的交流和学习。

github

        是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请个账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等,也在github上公布有开源的代码,感兴趣的程序员也可以自己查找着看一些。想看国内大公司的代码,可以看连接:https://www.zhihu.com/question/20194937

总结来说,git可以认为是一个软件,能够帮你更好的写程序,github则是一个网站,这个网站可以帮助程序员之间互相交流和学习。

        在别人的网页上看到的git和github的使用方法:

        以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git

和Github来托管自己的代码和读书笔记方便了不少,到哪里只要有网就可以把自己的东西拷贝下来继续使用。

我这里简单的记录一下我使用的过程,最简单的使用都是,高级的功能我一直没有使用到,虽然买一本《Git权威指南》

但是很多东西用不到就不能够真的会。下面开始简单介绍我使用的方法,我这个是在windows上使用的。我使用分两种情况,

因为我的代码都是在Linux下写的,所以在linux下主要是托管代码用,在windows下主要是托管笔记使用的,比如一些PDF

文档,我在看的时候会加入自己的注释,这样使用托管功能,在哪里都可以接着注释,不用总是拷贝或者总是需要复制。

    先注册github.com的账号官方网站: https://github.com/

注册界面,第一个用户名,以后会用到,我的是bxxfighting


简单使用Git和Github来管理自己的代码和读书笔记

2.      登录成功后界面

简单使用Git和Github来管理自己的代码和读书笔记

4.      创建仓库成功后,界面如下显示,可以点击README.md来编译这个文件

简单使用Git和Github来管理自己的代码和读书笔记


简单使用Git和Github来管理自己的代码和读书笔记


在windows下安装Git

1.      下载完毕,打开安装,点击”next”

简单使用Git和Github来管理自己的代码和读书笔记

3.      可以更改安装路径后,点击”next”

简单使用Git和Github来管理自己的代码和读书笔记

5.      直接点”next”

简单使用Git和Github来管理自己的代码和读书笔记

7.      默认设置就可以,如果你的机器装了SVN的话,这里可能还会有一步,就是让你选择SSH的,也不要更改,就直接默认就好,也就是说安装这个软件的时候,其实只有安装路径想改的话,更改一下就好了,其它的都保持默认就OK了

简单使用Git和Github来管理自己的代码和读书笔记

9.      双击图标”Git Bash”

简单使用Git和Github来管理自己的代码和读书笔记

2.      配置Git,图示如下:

a)        回车之后,会出现一行,让你输入一个保存密钥的地方,括号里面是它默认的位置,可以在冒号后面自己写一个位置保存,我这个是在E盘下创建了一个目录叫Hello,后面那个id_rsa就是密钥要保存的文件名,这个文件是自动生成的,后生成两个一个叫id_rsa,一个叫id_rsa.pub,我这么做了之后,发现生成的密钥目录里少了一个文件known_hosts,如果按照默认的目录的话是有这个文件的,如果没有这个文件,后序出现了问题,因此,建议还是直接用他的默认路径就好,这里就不要自己填路径了,直接回车

c)        现在转到github网站上去配置一下ssh key,点击箭头指示图标Account settings,然后点击左侧的SSH Keys,之后点击右侧的Add SSH Key,这样就会出现添加SSH Key的界面,在Title这一栏填一个名字,名字随意起,之后打开刚才生成的那个文件id_rsa.pub,全选复制里面的内容到Key这一栏中,点击Add Key按钮完成操作,这时你填的邮箱会收到一封确认的邮件,不用管它

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记


e)        现在配置一下用户名和邮箱:

git config –global user.name “用户名”

git config –global user.email “邮箱”

简单使用Git和Github来管理自己的代码和读书笔记

4.到现在为止,我们就算把Git和github配置完了,我现在要做的事情是把自己的QT项目NowToDo托管到github上,那么就开始操作吧

a)  右击目录,出现的菜单中有Git Init Here,点击它,这时在这个目录下会出现一个隐藏目录.git,这个是有关配置等功能的,不用管,我的项目NowToDo在这个NowToDo目录下,包括.cpp等文件

简单使用Git和Github来管理自己的代码和读书笔记


简单使用Git和Github来管理自己的代码和读书笔记


c)        由于我建立仓库的时候创建README.md之时,已经算一次提交了,我需要先在本地同步一下仓库的内容,命令如下:

git pull git@github.com:bxxfighting/NowToDo.git

完成的效果如下图,并且本地目录下多出了两个文件,这是原本在github上的两个文件

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记


e)<span font-size:7pt;"="" style="box-sizing: border-box;">        下面就要把我们本地的上传到仓库上去了,首先执行增加命令,如下:

git add .

add后面加了一个点,是想要提交所有文件,如果想提交指定的文件,可以写文件名,执行完增加命令后,要执行提交命令,如下:

git commit –m “NowToDo_v1.0版本”

-m后面跟提示信息,这个提示信息是一定要写的,不仅是规则,同时也方便我们记录我们提交的过程,写清晰为什么提交或修改了什么是非常有用的,提交完成后,我们就要把它推送到远程仓库上去了,命令如下:

git push git@github.com:bxxfighting/NowToDo.git

这样就完成了我们要做的所有任务

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记

到这就差不多了,我每次用其实都来看看,不是总是用,有点记不住,第一次这样就过就记下了,方便以后使用。其实

这真是非常方便的,可以使用熟练,管理自己的代码和笔记很好的东西,以前管理代码,最近发现每次看电子书,里面写上笔记,但是同步费劲,现在决定用它来管理了,回去在自己的笔记本上也这样来用,就可以同步自己看的进度了。

来自:http://my.oschina.net/bxxfighting/blog/378196
————————————————
版权声明:本文为CSDN博主「skyxmstar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skyxmstar/article/details/65631658

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

编写一个成熟可用的程序是一个工作量很大的工程,并非我们一次性就可以搞定的工作,所以在开发过程当中需要:

      1、  多人协作

              随着对程序体验的需求的提高,一个程序需求的编程知识和模块也在增多,这种情况下让一个程序员同时掌握多门技术是不好实现的:

              1、掌握的难度大,开发的成本高(比如:一个大牛的工资)

              2、开发效率高,一个人开发的效率是不行的

              所以,我们在工作当中大部分讲究的是协作开发,我们以项目需求的技术模块进行团队的组合。

              比如:开发一个web项目:如果要招聘一个web大牛,前端、后端、运维服务器都很牛的大牛,薪资高先不说,人也不好找啊。并且一个大牛的开发效率

              和开发压力也很大。所以我们会形成一个开发的团队,找前端开发工程师,后端开发工程师,运维工程师,数据库工程师来完成这个艰巨的任务。

       2、  版本迭代

              就好像一个美术家要完成一件作品,并不是一蹴而就的,好多时候是经历过多次修改的过程,我们编程也是一样的,当然这个修改要有原则,并不是推

             倒重来的过程(当然前期无药可救的不算),而是有简单的一个完整的框架开始,然后不断优化升级的过程,这个过程就是版本迭代。

那在这个过程当中,我们需要对代码进行管理,比如:提交、检出、回溯历史、冲突解决、多人协作。那这些需求也就衍生出了我们要学习使用的版本控制工具。

各个公司由于开发的需求和其他因素用到的版本控制工具不都相同,这里我们介绍几种使用较多的版本控制工具。

        Cvs:  是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到

        保证文件同步的目的。是一种很古老的版本控制工具了,但是是很典型的集中式版本控制工具

        SVN: 是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。可以说是集中式版本控制的集大成            者。

        Git:   是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。是一种分布式的版本控制工具

        GitHub:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

 上面介绍了我们常用的四种版本控制软件,但是也要给大家解释两个概念:

分布式版本控制:分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推

送合并到另外一个代码仓库中。

集中式版本控制:只有一个中央控制,所有的开发人员都必须依赖于这个代码仓库。每次版本控制的操作也必须链接到服务器才能完成。

所以很多公司喜欢用集中式的版本控制是为了更好的控制代码。如果个人开发,就可以选择Git这种分布式的。并不存在那个更加好或者其他的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!