学习版本控制一般侧重于几个方面,思想,粒度,流程,权限与角色,分支管理,冲突管理,工具。下面从这几个方面进行Git的说明。
1、思想。首先Git是由于Linux之前的版本控制被取缔了(由于Linux社区的人玩的过火了),Linus调解无效,用了两周时间开发的Git初期版本,所以其最初主要用于Linux的版本控制。Linux各路大牛汇聚,思想激烈碰撞,所以难免会各抒己见,不像大家平时开发项目一样,主线——冲突——解决冲突——主线,而是给了大家自由度,随你怎么开发,随你怎么修改,你自己的分支搞成什么样子都行,但是经不经过统一还是委员会(似乎有这么个地方)说了算,所以其核心还是分布、多中心、个性化。
2、粒度。两个星期开发的东西,虽然如Linus一般牛,但难免也会复用一些思想,虽然还没来得及看源码,估计内部也是sed、awk之流进行控制标示的,分析文档异同,进行汇总,如果进行合并,会插入相应的版本之间的异同,比直接文件管理粒度更细一些。
3、流程。Git的核心流程分成了修改(包括增、删、改)——暂存区——资源库——远程库同步,这样四个步骤,修改是必备操作,将想要包含的修改放进暂存区,如果确认无误可以提交到资源库中,如果想要与远程资源库进行同步再push过去即可,同时,git还定义了各个步骤的回退过程,可以使你会退到之前的各个版本,但是提交之后会有相应的日志记录,所以还是谨慎为好。
4、权限与角色。以GitHub为例每个人都有自己的用户,git实际上是通过命令行进行访问的一般得需要把公钥进行上传,http则需要输入相应的用户名和密码。你可以对别人的公共库进行fork但是别人接不接受你的分支取决于资源库的管理者。
5、分支管理。分支管理是Git中比较有意思,并且有意被强化的概念,支持多个分支进行并行开发,并且从某种程度上接受某个分支的管理策略,很方便的进行分支的merge,快速merge对相同的内容且没进行什么修改的文件直接合并,比基于文件的合并和分支开发操作要方便很多,同时,服务器端也可以是任意分支,你可以建立起自己某个分支和服务器分支的对应关系,另外,分支的切换可以使你很方便切换、维护不同的版本,而不需要把某些东西先备份然后才放心做其他处理,git log graph可以很方便的查看分支图。
6、冲突管理。首先,冲突来源于不同用户的不同修改,从广义上讲属于资源竞态,所以在merge的时候就需要查看相应的不同,从而确定不同版本之间的选择,在Git中你只需对保存你修改的内容从而进行确认标示,然后在进行一次提交就可以快速完成版本的修改任务。
7、工具。Git是一个完整的作品,自己包含了bash与Gui,现在貌似已经兼容了三大主流平台,所以大家可以放心使用,同时, git也成了Eclipse的标配,在这上面经过简单的修改于配置即可实现与Git服务器的同步。另外,Git的服务器常见如github用起来比较方便,但免费的用户必须公开,如果私有得付钱,所以如果决定使用git的话最好还是自己来搭建git服务器,如gitlab,smartgit都是不错的选择,gitlab好像国内好多互联网公司都在使用。
1、思想。首先Git是由于Linux之前的版本控制被取缔了(由于Linux社区的人玩的过火了),Linus调解无效,用了两周时间开发的Git初期版本,所以其最初主要用于Linux的版本控制。Linux各路大牛汇聚,思想激烈碰撞,所以难免会各抒己见,不像大家平时开发项目一样,主线——冲突——解决冲突——主线,而是给了大家自由度,随你怎么开发,随你怎么修改,你自己的分支搞成什么样子都行,但是经不经过统一还是委员会(似乎有这么个地方)说了算,所以其核心还是分布、多中心、个性化。
2、粒度。两个星期开发的东西,虽然如Linus一般牛,但难免也会复用一些思想,虽然还没来得及看源码,估计内部也是sed、awk之流进行控制标示的,分析文档异同,进行汇总,如果进行合并,会插入相应的版本之间的异同,比直接文件管理粒度更细一些。
3、流程。Git的核心流程分成了修改(包括增、删、改)——暂存区——资源库——远程库同步,这样四个步骤,修改是必备操作,将想要包含的修改放进暂存区,如果确认无误可以提交到资源库中,如果想要与远程资源库进行同步再push过去即可,同时,git还定义了各个步骤的回退过程,可以使你会退到之前的各个版本,但是提交之后会有相应的日志记录,所以还是谨慎为好。
4、权限与角色。以GitHub为例每个人都有自己的用户,git实际上是通过命令行进行访问的一般得需要把公钥进行上传,http则需要输入相应的用户名和密码。你可以对别人的公共库进行fork但是别人接不接受你的分支取决于资源库的管理者。
5、分支管理。分支管理是Git中比较有意思,并且有意被强化的概念,支持多个分支进行并行开发,并且从某种程度上接受某个分支的管理策略,很方便的进行分支的merge,快速merge对相同的内容且没进行什么修改的文件直接合并,比基于文件的合并和分支开发操作要方便很多,同时,服务器端也可以是任意分支,你可以建立起自己某个分支和服务器分支的对应关系,另外,分支的切换可以使你很方便切换、维护不同的版本,而不需要把某些东西先备份然后才放心做其他处理,git log graph可以很方便的查看分支图。
6、冲突管理。首先,冲突来源于不同用户的不同修改,从广义上讲属于资源竞态,所以在merge的时候就需要查看相应的不同,从而确定不同版本之间的选择,在Git中你只需对保存你修改的内容从而进行确认标示,然后在进行一次提交就可以快速完成版本的修改任务。
7、工具。Git是一个完整的作品,自己包含了bash与Gui,现在貌似已经兼容了三大主流平台,所以大家可以放心使用,同时, git也成了Eclipse的标配,在这上面经过简单的修改于配置即可实现与Git服务器的同步。另外,Git的服务器常见如github用起来比较方便,但免费的用户必须公开,如果私有得付钱,所以如果决定使用git的话最好还是自己来搭建git服务器,如gitlab,smartgit都是不错的选择,gitlab好像国内好多互联网公司都在使用。