SVN与GIT的区别
概念
SVN:集中化的版本控制系统
GIT:分布式版本控制系统
集中化的系统,受限于服务器,比如:提交记录,如果我离线的话,提交记录是看不到的;代码更改,我想查看每次提交的更改也很困难;
为什么使用GIT?
git可以提高开发效率,主要表现在:
- 合并对提交过程的保留
- 修正提交
- 廉价好用的本地分支
- 更强大智能的合并能力
- 完整配套的开发过程设施(wiki issue 功能大赞!)
- 查看日志
windows下使用git
- 安装git bash。
- 生成ssh key,打开git bash,输入下面命令行,生成ssh key,windows将会在C:\Users\userxx\.ssh下生成公钥/私钥。
4. 在码云上创建项目,然后在本地checkout。
5. 安装GitKraken,并注册账号。
6. 打开刚刚clone的项目。
7. 提交修改
7.1 将修改加入到暂存区
7.2 输入summary,点击提交。
7.3 commit后只是在本地提交了,但是修改并没有提交到远程git服务器,还需要点击push,才会提交到远程服务器。
这里我们可以选择左边栏的master分支,点击右键,选择set upstream,还可以提交到不同的远程git服务器。
7.4 创建本地分支。
我们平时都会把用于发布的版本提交到master分支,平时开发都在dev分支进行,然后每人还会有一个自己的开发分支。
这里我创建一个dev分支和jiangzd分支,然后在jiangzd分支上进行修改,最后测试通过后把修改merge到dev分支。
7.5 有时候我们只想把某个提交merge到一个分支,而不是整个分支都merge,可以使用cherrypick,merge单次提交。
这里我们将jiangzd分支上定时任务提交merge到master分支。
7.5.1 首先切换到master分支
7.5.2 选择jiangzd分支上的定时任务提交,右击,选择cherry pick commit。
这就实现了个别提交的cherry pick。
7.6 reset分支到某个提交。
这里我们将dev分支reset到2018/02/07 21:25merge branch jiangzd to dev这个提交点。
reset后点击push。
选择force push,就将之后的所有提交恢复。
7.7 解决冲突
git推广过程中很大的问题就是不熟悉的用户在解决冲突的时候经常犯错,造成员工很大的抵触,使用GitKraken解决冲突也是比较简单的。
这里我们在jiangzd和lwb分支分别修改了ScheduleTask.java文件的13行,然后分别提交合并到dev分支,以这个为例解决冲突。
7.7.1 修改jiangzd分支代码
7.7.2 修改lwb分支代码
7.7.3 将lwb分支的修改merge到dev分支
7.7.4 将jiangzd分支merge到dev分支。
7.7.5 我们看到在dev分支上产生了冲突。
点击冲突文件可以看到冲突详细内容,左边是dev分支上的内容,右边是jiangzd分支上的内容,合并的人可以根据情况选择到底选择那边的代码进入dev分支。这里我们选择jiangzd分支的内容,在对应行打上勾。完成后选择Save。
点击commit,就提交到了本地库,然后点击push,就完成了这次的合并。