ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Git:Git应用入门以及实战

2021-05-05 12:00:08  阅读:139  来源: 互联网

标签:实战 Git 入门 开发人员 代码 控制系统 版本控制 版本 服务器


一、版本控制

1.1什么是版本控制系统?

版本控制系统(VCS,version control system)是一种用户可以根据时间追溯项目文件修改历史和属性的工具,可以帮助团队协作开发。GIt可以为每个开发人员提供专属的沙箱,防止开发人员的工作出现冲突,同时采用冲突合并和同步机制,实现以非阻塞的方式进行高效的协作。比如说HelloWorld.java这个文件,下面是其第一个版本:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello world...");
    }
}

然后修改了一次代码,让其变成第二个版本:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello world...");
    }
    public String sayGoodBye(String user){
        return "Good bye"+user;
    }
}

然后过了几天,又修改了一次代码,代码变成了第三个版本:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello world...");
    }
    public String sayGoodBye(String user){
        return "Good bye"+user;
    }
    public String sayHello(String user){
        return "hello "+user;
    }
}

那么什么是版本呢?一个代码文件,每次修改都是这个代码文件的一个版本,每个版本的代码都不一样。这个版本就是版本控制系统中的那个版本。那么版本控制是什么意思呢?这个时候HelloWorld.java处于其第三个版本的状态,一共有11行代码。但是这个时候问题来了,比如这个HelloWorld.java代码上线运行一下,后来发现代码不对,这个版本的代码不是我们期望的,这个时候希望能快速回到上一个版本的代码,然后重新上线,这个时候怎么玩呢?这个时候就需要进行版本控制。首先要记录下来一个文件修改过程中的每一个版本;然后可以针对每个版本进行版本回退,多个版本代码的差异比较。比如说你现在在做一个代码的开发,但是发现写完代码之后就是怎么测试都通过不了,都是各种报错,这个时候我想看看我现在写的代码和之前提交的代码之间有什么差异,我到底改动了哪些东西。

那么到底什么是版本控制系统呢?就是每次修该代码之后,就将修改后的这个版本提交到版本控制系统中去,然后由版本控制系统来给我们管理我们代码中每个代码文件的所有版本。当我们需要进行版本控制的时候,比如说回退到上一个版本,这个时候就直接向那个版本控制系统下达一个命令说,我们现在需要切换到上一个版本的代码,你给我在1s之内完成这个事儿,然后版本控制系统就会自动到上一次提交的版本的代码给你恢复到你的电脑上来。

1.2版本控制系统的演进历史

  • 本地版本控制系统
    最早的版本控制系统,比较知名的是RCS,就是在本地对你文件的每次修改都维护一系列的patch,每个patch就是两个版本之间的修改。然后如果你要回退到某个历史版本,RCS会通过path的应用来恢复任何一个时间点文件。这种方式常见于上世纪八九十年代,就是一个程序员写一个系统编程,只要自己可以管理自己版本的代码即可,不需要跟别人协作。但是如果你要跟其他同学协作共同修改一份代码,来完成某个系统的开发,这个时候这种系统就不太可能了。
  • 集中式版本控制系统
    后来大家遇到的问题就是,不是只有自己需要在本地对文件版本进行控制,尤其是软件开发人员,需要多人协作,对同一份代码进行版本控制,比如每个人都要进行代码的修改,那么每个人都会更新出一个版本的代码。这个时候就需要进行集中式版本控制系统了,就是弄一个服务器,上面放所有的代码,并且进行版本控制,接着就是多个开发人员在本地连接服务器,将代码从服务器检出到本地,并且将代码的修改提交到服务器。比较知名的有CVS和SVN,在很长一段时间之内,尤其是在上个世纪90年到到2000年初期,集中式版本监控系统就是控制系统的标准。持续到2005年以及2010年之前,应用还是很广泛。但是集中式版本控制系统最大的问题就在于单点故障,如果服务器故障一段时间,那么开发人员啥都干不了,没有办法从服务器检出最新的代码,没有办法提交代码。更坑爹的是,如果服务器磁盘坏了,结果还没有备份,那么完蛋了,所有的代码全部消失。
  • 分布式版本控制系统
    这种模式下,每个开发人员在自己本地的电脑上,都会捡出一个完整的代码包括所有历史版本的代码到本地,相当于每个开发人员都有一个完整的代码版本拷贝。此外,每个开发人员自己本地都有一个完整的版本控制系统。如果服务器出现任何故障,开发人员可以在自己本地做所有的工作,包括代码版本的切换,代码修改的提交等等所有的版本控制操作,不会影响到自己的工作。如果磁盘坏了数据丢失,那么可以将某个开发人员本地版本库拷贝一份代码到服务器,去恢复数据即可。

1.3集中式版本控制系统的优势

  • 跟集中式版本控制系统不一样的地方,在于每个研发人员会将服务器上所有的代码和所有的版本都拷贝到本地。但是集中式版本控制系统就从服务器拉取部分代码和部分的版本。
  • 一旦服务器断网了,我们可以在本地基于完整的代码和完整的历史版本完成所有的工作;集中式版本控制系统拉取一些代码,切换一个历史版本都需要联网,基于服务器去搞。联网的话可能网速很慢,服务器可能出现单点故障。
  • 一旦服务器磁盘坏了,代码和历史版本都丢失了,没关系,直接从任何一个研发人员的电脑上,就可以恢复一份完整的代码和历史版本,可能会丢失一点点最新提交的代码,但是肯定可以恢复大部分的代码的。

1.4Git的前世今生

linux的创始人linus,最早用很原始的方式来管理linux的源码,开源贡献者通过diff工具把修改后的源码发给linus,然后linus手工合并所有的代码,自己解决冲突。当时linus非常反对使用CVS、SVN等版本控制工具,觉得是集中式的需要联网很麻烦。但是到了2002年,代码过于庞大,在社区的压力之下,linus选择了商业版本控制系统BitKeeper,拿到了免费的使用授权。但是不幸的是,2005年的时候,linux社区的一个哥们,尝试破解BitKeeper,结果被BitKeeper公司发现了,愤怒的收回了对linux社区的免费使用权。接着linus就用2周的时间自己写了一个分布式的版本控制系统Git,然后linux的几百万行的代码就开始使用Git进行版本控制。一直发展到今天,Git成为最流行的版本控制系统。直到今天尤其是互联网公司,基本上都是git。

标签:实战,Git,入门,开发人员,代码,控制系统,版本控制,版本,服务器
来源: https://blog.csdn.net/weixin_42488772/article/details/116422545

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有