一、概念
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
二、集中式和分布式的区别
集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的电脑都是自己的电脑,所有要从中央服务器取得最新的版本,然后开始干活,干完活,再把自己的活推送给中央服务器。中央服务器好比图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完在放回图书馆。
集中式版本控制系统最大的缺点就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,如果网速慢的话,那更新提交就不行了。
分布式控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人的电脑上都有一个完整的版本库,那多个人 如何协作呢?比方说你在自己电脑上改了文件A,同事也在他的电脑上改了文件A,这时,你们俩之间只需要把各自的修改推送给对方,就可以相互看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了只要随便从其他人那里复制一份就可以了。而集中式版本控制系统的中央服务器出了问题,所有的人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,或者他的电脑没有开机 。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,这个服务器的作用仅仅是用来方便“交换”大家的修改。没有它大家也一样干活,只是交换修改不方便而已。
三、安装git
运行Git-2.8.1-64-bit.exe进行安装
四、myeclipes部署git
解压org.eclipse.egit-updatesite-1.3.0.201202151440-r-site 到D:\Users\hp\AppData\Local\MyEclipse\MyEclipse 10\dropins目录中(和SVN配置类似)
五、配置myeclipes中git属性
点击图中的new entry增加属性,分别添加key: user.name 和key:user.email属性
六、用git管理项目
1.用git从远程导出项目
点击window ---show ---git repositories出现:点击红圈部分
出现下面界面
然后下一步下一步完成,把导出的项目导进myeclipes就好了。
2.本地新建项目
新建项目与git关联
右击项目team -- share project
打开share project 界面选择git,然后下一步:
下面为创建本地的版本库
点击finish完成配置
七、提交项目
1.右击项目teame中的commit
2.打开后为下图(此处提交不是正式提交,是先放在本地版本库了)
3.往远程版本库提交
点开出现如下界面
点击next出现
点击完成就把项目放到了远程版本库。
八、更新项目
1. 打开myeclipes -git -repository setting,选择自己的repository
点击open
在打开的配置文件中加入
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/lxl987210264/ceshi.git
(url为远程项目本本库路径)
加完后repository setting新增加属性:
2.右击项目team -pull就相当于SVN的更新(也可以用merge和远程分支就行合并,注:merge比较简单方便,建议使用)
九、冲突解决
1.当你从远程库更新时遇见冲突,例如:(红色部分代表有冲突文件)
2. 方法一:比较文件team ---synchronize workspace
出现下面界面:从这里也可以看到冲突
打开冲突文件显示为:
可以看到冲突的具体位置,然后更改冲突;
方法二:
右击冲突文件team --- merge tool
:
出现如下界面
点击ok出现熟悉的界面:
同样可以进行比较确定冲突位置,然后更改冲突文件。
改完冲突后右击冲突文件team---add to index(再次将文件加入索引控制)
此时文件已不再是冲突文件
然后在进行commit ---》 push 提交到远程,冲突就搞定了;
十、git分支
1.创建分支
右击要创建分支的项目team ---switch to---new Branch
点击出现如下界面,输入分支名称点击完成。分支就创建好了,并且会自动切换到新建分支
2.切换分支
如上图可以看出当前在哪个分支,我们切回到主干:
右击项目team---switch to -- master
就切回了主干:
3.将分支合并到主干
如下为我主干中aa.java文件的内容
分支aa.java文件内容为:
接下来将分支内容合并到主干,首先先提交修改的分支内容到本地,然后在提交push给远程,方式和之前的提交方法一样,就是选择分支选择对就行
提交完成后我们切到主干,右击项目team --merge
打开如下界面:
选择要被合并的分支点击merge:
现在主干中aa.java文件内容为
这样就完成了把分支合并到主干;
4.将主干合并到分支上
主干合并到分支步骤和分支合并到主干类似,将当前项目切换到分支,然后选择主干进行合并。
5.删除分支
右击项目team---switch to---other
打开如下
点击删除,在此处也可以进行更改名字(rename);
十一、版本回退
1.右击项目team -- show in history
2.出现如下界面:
在这里可以看到历史所有的版本及改动内容;
3.右击指定的具体某一个版本:
reset有三种类型:
soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
mixed(默认): 此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
hard: 彻底回退到某个版本,本地的源码也会变为上一个版本的内容 .
4. 回退好在push到远程仓库。