版本控制(Revision control)是一种在开发过程中用于管理我们对文件、目录、或工程等内容的修改历史,方便查看更改历史记录,备份以便回复以前的版本的软件工程技术
-
实现跨区域多人协同开发
-
追踪和记载一个或者多个文件的历史记录
-
组织和保护你的源代码和文档
-
统计工作量
-
并行开发、提高开发效率
-
跟踪记录整个软件的开发过程
-
减轻开发人员的负担,节省时间,同时降低人为错误
简单来说就是用于管理多人协同开发项目的技术。
3.常见的版本控制工具-
git 分布式版本控制
所有的版本信息仓库全部同步到本地的各个用户,这样旧可以在本地查看所有的版本历史,可以本地查看所有的版本历史,可是在本地提交,只需联网时push到相应的服务器和其他用户那里,由于每个用户都保存所有的版本信息,只要有一个用户的设备没有问题就可以回复所有的数据。
缺点:
-
每个人都拥有全部的代码,安全隐患。
-
增加了本地存储空间的占用
-
-
svn 集中版本控制
所有的版本数据都保存在服务器上,协同开发者同步更新上传自己的修改
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不联网的话,用户就看不到原来的版本,也无法切换版本验证问题,或在不同的分支工作。而且,所有的数据都保存在的单一服务器上,有很大的风险,如果这个服务器损坏,这样就会丢失所有数据。可以定期备份来解决这样的问题。
SVN是集中版本控制系统,版本库是集中放在中央服务器的,用的都是自己的电脑,所以首选从中央服务器中最新的版本,然后工作,完成工作后,需要把自己完成的工作推送到中央服务器,集中式版本控制系统必须联网才能工作,对网络宽带要求比较高;
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法就是这样:比如说自己的电脑上改了文件A,其他人也在电脑上改了文件A,这是,你们俩之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了,Git可以直接看到更新了那些代码和文件!
5.Git的安装直接可以在官网上下载
下载最新的版本即可
启动Git
Git Bash:unix与Linux风格的命令行,使用最多
Git CMD:windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,建议使用命令
常用的Linux命令
6.Git的基本理论三个区域
Git本地有三个工作区域:工作目录(working Directory),暂存区(Stage/index),资源库(Respository/Git Directory),如果算上远程的git仓库(Remote Directory)就可以分为四个工作区,文件在这四个工作区之间的转换关系入下:
-
Work Directory:工作区,就是平时存放代码的地方
-
index/stage: 暂存区,用于临时存放你的改动,事实上它也是一个文件,保存即将提交到文件的列表信息
-
history:仓库区(即本地仓库),就是安全存放数据的位置,这里有你提交数据,其中head指定最新放入仓库的版本
-
Remote 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。
-
在工具目录中添加、修改文件`
-
将暂存区域的文件提交到git仓库
因此git管理的文件有三种工作状态:已修改(modified),已暂存(staged),已提交(committed)
8.创建工作目录与常用指令工作目录(WorkSpace)一般就是你希望git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文
日常的使用只需记住这留个命令即可
9.本地仓库的搭建创建本地仓库有两种方法,意识创建全新的仓库,二是克隆远程仓库
1.创建全新的仓库,需要用Git管理项目的根目录执行
#在当前目录新建一个Git代码库 git init
2.克隆远程仓库
从远程克隆仓库
#克隆一个项目和他的完整代码历史 git clone [url]10.文件的四种状态
版本控制就是对文件的版本控制,要对文件进行修改,提交操作,首先要知道文件当前在什么状态,不然可能提交了现在不想提交的文件,或是提交文件的没提交上
-
Untracked:未跟踪;表示当前文件在文件夹中,并没有加入到git代码库,不参与版本控制,通过git add状态变为Staged
-
Unmodify:文件已经入库,未修改,即版本库的快照文件和文件夹中完全一种,如果它被修改,变为Modified,如果git rm移除版本库,则成为Untracked文件
-
Modified:文件已经修改,仅仅是修改,并没有其他的操作,这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
-
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
1.在项目的地址中打开命令行
2.输入命令行 git init
3.执行成功后项目路径下出现 .git文件,代表创建本地库成功
12.Git的版本回退1.在模块上右键或者点击工具栏查看历史
2.选择要切换的版本
3.右键=》copy revison number
4.在模块上右键
5.选择Head并粘贴版本号
6.版本回退成功
13.Git的分支与合并1.创建分支
2.选择new branch并命名,点击Create
3.在分支上提交新的代码
4.分支的合并 项目右键 切换到主干
5.在模块上右键选择合并改变
6.选择合并的分支
7.分支合并成功
14.Git解决冲突当主干和分支在同一个位置都存在代码时,就需要解决冲突
1.分支添加内容,并添加到暂存区和本地库
2.在主干添加内容,并添加到暂存区和本地库
3.在主干合并分支内容,出现冲突
4.选择合并,并出现处理窗口
5.处理之后
6.点击apply应用,这里我们选择两者都要
15.更新本地库正常情况下是合作伙伴上传新的代码到GitHub上,如果我们此时本地库不是最新的,我们将无法上传,为了安全起见,我们需要得到最新的远程仓库文件
测试
1.在GitHub上在线添加一个文件
2.在Idea中的本地库修改文件,添加到暂存库,添加到本地库,然后上传,发现上传被拒绝。
3.此时点击Merage或Rebase都可以实现本地库和远程Github的同步
4.也可以点击Cancel之后通过以下方式更新本地库
5.点击Pull将GitHub上最新的文件合并到本地库
6.点击Pul之后更新本地库成功
16.更新远程仓库地址


