为了账号安全,请及时绑定邮箱和手机立即绑定

版本管理工具Git介绍_慕课网笔记

标签:
Java


视频链接:

https://www.imooc.com/video/4414

简介:本课程主要讲解了git在各平台的安装和基本使用,Git能够帮助我们解决文件的提交、检出、回溯历史、冲突解决、多人协作模式等问题,并且大大提升我们的工作效率。

 ————————————————————————————————————

第1章 版本管理工具初探

聊聊版本管理工具是什么,它能为我们做什么。

版本管理工具的作用:

1.备份文件,

每当我们对文件做修改的时候,提交一个修改给版本管理工具进行一个保管,万一哪天电脑坏了,还能从备份中恢复。

备份是项目进行过程中,最基本的事情,因为每天的工作结果都保存在这个文件当中,如果不可预料的因素导致文件丢失了,这种损失是非常大的,

2.记录历史

网盘和U盘保留的是最新的文件状态,版本管理工具,每一次的修改提交给它后,都会如实备份,它会记录是何时,何人,进行的修改,这样,当我们需要去回溯,查找信息的时候,版本管理工具会告诉我们。

3.回到过去

找回之前提交的文件

4.多端共享

就像云备份,云服务,可以在不同的设备上,拿到最新的文件。

5.团队协作

软件开发项目,需要团队协作,

————————————————————————————————————————————

版本管理工具发展历史

CVS是第一个被大规模使用的版本工具,是集中式的,文件是保存在中心服务器上,

坏处是:如果没有办法联网,就无法工作了。

SVN是集大成者,将版本管理工具发扬光大。

git: 诞生于2005年,是linux之父林纳斯开发的,正在取代SVN,不过公司内部使用版本管理工具,替换成本非常高,所以会发现现在很多公司依旧保留这SVN,

 

集中式和分布式的区别

集中式需要一个中心服务器来放置最新的文件,如果不联网就没有办法提交,没有办法查看之前的记录,很多插座都没法做。

分布式不同,每一个拥有版本库的人,都可以在不联网的情况下,快速的完成文件的提交,查看历史记录,或者删除等等操作,在效率上比集中式要高很多。

 

github

git是代码库托管网站,而git是版本管理工具,两者不是同要给东西。

不过github的代码托管操作,是基于git来完成的。

 

————————————————————————————————————————

Git下载和安装

 

去官网下载对应操作系统的最新版本。

 

linux下安装Git环境

 

使用CentOS服务器,使用软件包管理器进行安装,可以帮助我们解决软件相互依赖的问题,

使用命令: yum install git

 输入:y

查看帮助: 输入: git --help

 

——————————————————————————————————————————

github注册

进入github官网

免费的用户可以无限的使用公开的仓库,即使我们不花钱,也可以无限的创建项目。

但是项目被创建好之后,是公开的,有可能会被其他人看到,

GitHub的这种设定,也是为了鼓励大家开源自己的代码,形成一个良好的开源风气,

————————————————————————————

在GitHub上创建一个新的项目

 为项目起名,不支持中文项目名

选择公开或私人。

私人的,可以设定谁可以查看我的项目并提交,需要花费每月7美元的费用。

 

 ————————————————————————————————————

Linux环境下检出项目到本地

作用是复制GitHub仓库的URIL到剪切板

使用命令: git clone 

________________________________________________________________

Linux环境下第一次提交项目

 

 将修改后的文件提交到版本管理工具中,

 

使用git status 

查看工作区状态

使用git add .

建立跟踪

使用git commit

进行提交,并填写变更的评论

目的是为了再将来,在历史纪录中查看到修改的目的是什么,

再次使用 git status

查看工作区状态

 没有文件要提交了,是一个干净的工作区。

使用git push

来发布本地提交,上传到GitHub上,

一方面避免我们的文件丢失,另一方面,方便伙伴拿到我们这次修改的内容。

需要输入用户名和密码

 

提示提交成功后,进入GitHub主页,刷新,可以看到最新提交的修改。

——————————————————————————————————————

关于代码冲突

解决冲突

冲突:就是同一个时间里,同一块代码,你也改了,我也改了,版本管理工具,没有办法处理,到底哪一个要保留下来,这时会抛出一个冲突,需要人工来进行取舍。

 

在第一个人提交成功后,

 

在第二个人提交时,就会发生冲突

这里的提交,是指使用git push命令,提交到GitHub仓库里,

推荐我们使用, git pull 将最新的代码拉下来,合并冲突,

使用git pull 

 

使用git status

查看运行库状态

使用git diff

查看两次修改的差异

打开文件,会八仙,保留了两次修改的内容。

手动修改后,进行提交,告诉github,我们已经解决了这次冲突,

 

使用git pull

可以拉下来最新的版本

——————————————————————————————————————————

如何回到过去

使用git log

查看之前都有哪些提交,获得回到过去的指针

找对应时间点,复制其commit ID

 

 使用git reset --hard

回到过去

hard指的是当前环境的版本指针,

退回去,拿到以前的代码,

 

使用git log

可以看到,最新提交的就是我们刚刚复制的commit

 

使用git reflog

获得回到未来的指针

使用git reset hard

回到未来(现实)

 

?过去的代码如何回到现实呢?

每发现将其复制到现实的操作啊?

 ——————————————————————————————————

建立里程碑

里程碑:就是我们平常看到的软件后的版本号,

每一个版本号,都意味着开发人员一段工作的完结,以及下一段工作的开始。

当软件发布以后,就需要建立一个里程碑,方便我们把一个完整的软件发布出去,

也方便将来我们去快速的寻找,某一个版本的代码去修复问题,

进入github仓库,点击release.

点击Draft a new release.

进入的界面,就是创建里程碑的界面

 填写版本号,添加描述和评论

点击发布,也就建立了一个历程碑。

如果软件是开源的,其他人就可以直接通过release这个地方,下载我们这个完整的软件。

 ————————————————————————————————————————

分支开发之分支合并

如果发布的代码中存在bug,但发布之后的代码已经进行了多次的修改和提交

此时就需要创建一个分支,以发布的代码为基础上进行bug的修改,修改完以后,再把修改的地方,同步到我们正在开发的那个主分支上。

这样就能够在不考虑现有开发进度的情况下,把这个bug解决掉。

__________________________________________________________________

分支开发之合并到masterr

这种开发方式,更适合于开源软件的推送

————————————————————————————————————————

多人合作的一些经验

1.多用客户端和工具,少用命令行,除非是在Linux服务器上直接开发

如果是做服务端开发的程序员则更适合命令行上开发,掌握更为复杂的命令和概念

2.每次提交前,diff自己的代码,

查看提交的都是一些什么代码,

确认提交的代码

以免提交错误的代码,

我们需要对我们提交的代码负责,这样才能将来提升我们的工作效率,不会因为我们的一些低级错误导致

后续给我们带来更多不应该出现的问题

新入行的人,会犯一些低级错误,比如将调试的代码提交到版本管理工具中,导致发布的文件会有各种各样的问题。

3.下班回家前,整理好自己的工作区,

理清哪些代码是要留下来的,哪些代码是要来调试的,哪些代码可能丢掉就不需要了,

建议:在每天工作结束之前,把我们要保留的代码提交到版本管理工具上,把不需要的赶紧清除掉,第二天,能够从一个干干净净的环境上,继续做工作。可以提升我们的工作效率,

从另外一个角度上来说,提交我们的代码,也就意味着在另一个地方留下了我们新写的代码,多了一份备份,作为保障。

4.并行的项目,一定要使用分支开发

因为在项目越来越多的情况下,人也越来越多,

很可能一个模块同时要进行两个不同的项目,要修改不同的部分,相互之间可能会有影响。

使用多分支开发,可以降低影响面,提升工作效率。

5.遇到冲突时,搞明白冲突的原因,千万不要随意丢弃别人的代码

新人可能会只保留自己的代码,把别人的代码丢掉了,这种情况可能会引发非常严重的后果,

因为你可能会把别人修复的一个bug,或开发完成的功能弄丢了,

这种情况非常难发现,有可能是因为用户反馈出哪有问题,这往往会给我们的项目带来非常多的负面影响。

6.产品发布后,记得打tag,方便将来拉分支修bug。

我们打完这个tag之后,可以随时随地的通过发布链条找到代码,了解当前代码的情况,

如果不做好这件事情的话,很可能在出现问题后,都不知道从哪一个版本开始修,

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消