用惯了svn的我们到底该如何理解git
Posted 码农小山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用惯了svn的我们到底该如何理解git相关的知识,希望对你有一定的参考价值。
通常,svn的代码库位于另一台机器,每次提交代码,就会在远端的代码库中产生一次提交历史(包含我们为每次提交写下的描述等附属信息)。整个过程完全依赖网络。在没有网络的环境中,开发人员甚至无法查看任何文件的提交历史。
相比之下,git最大的优势便是:将代码库以“.git”目录的形式存放在本地项目中。从而保证每次提交(commit)可以不依赖网络环境。
问:Git如何解决多人协作开发呢?
答:Git支持对版本库进行操作!
啥?我没说明白?请听我解释。Git、svn、cvs,vss等版本库,它们共同点之一是:所有的提交操作都是将代码提交至版本库;更新操作都是从版本库更新代码到本地。所以,这两个操作都是围绕本地代码和版本库进行的。换言之,在这两个动作中,主角是“本地代码”和“版本库”。
同样类似的操作,git却允许主角是“自己的版本库”和“别人的版本库(远端库)”。也就是说git支持版本库之间互相更新和提交代码。只不过git为这两个主角的新戏起了两个新名字:拉取(fetch),推送(push)。团队成员之间通过同步各自版本库的方式实现协作开发。
正常的项目开发中,团队会创建一个公用版本库作为主库(通过gitlab、gitolite等第三方工具使其支持远程fetch和push),工程师会将自己的版本库(提交过的代码)push到主库;将主库的代码fetch到自己的版本库。
你可能会猜到,fetch是不会影响到本地代码的。也就是说,即使用了fetch命令也只会影响到本地版本库,并不会对本地代码产生影响。如果需要将自己最新版的版本库更新到工作目录中,需要再用到合并命令(merge),这一步你可以理解为SVN中的update操作。
问:能否把远端库的代码一步直接更新到本地开发目录中?
答:使用pull命令(pull命令封装了fetch和merge)
总结:正是因为支持了团队成员之间同步各自版本库,Git才实现了多成员的协作开发。也正因如此,git被称之为分布式的版本控制工具。
以上是关于用惯了svn的我们到底该如何理解git的主要内容,如果未能解决你的问题,请参考以下文章
用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler
转载用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler