版本控制SVN和Git
版本控制
1.为什么需要版本控制?
从个人开发过渡到团队协作。
-
集中式版本控制工具
CVS、SVN、VSS……
-
分布式版本控制工具
Git、Mercurial、Bazaar、Darcs……
3.SVN工作机制
-
检出(Checkout)
- 把服务器端版本库内容完整下载到本地。
- 在整个开发过程中只做一次。
-
更新(Update)
- 把服务器端相对于本地的新的修改下载到本地。
-
提交(Commit)
- 把本地修改上传到服务器。
分享博客:SVN使用—工作模式及运行原理以及优缺点对比
4.SVN服务器端安装
这里教大家安装svn到linux上,打开虚拟机,打开SecureCRTPortable.exe。
输入命令:yum install -y subversion
查看版本是否安装成功:svn --version
5.创建版本库
①SVN服务配置文件
vim /etc/sysconfig/svnserve,这个文件只是看看,不需要改。
②创建版本库目录和项目目录
输入命令:mkdir -p /var/svn/pro_oa
pro_oa:这里是你要上传项目到服务器是的仓库名,我这里用了简写,一个oa项目的仓库名
③执行svnadmin命令真正创建版本库
输入命令:svnadmin create /var/svn/pro_oa
④将来的访问方式
svn://ip地址:端口号(默认可以不用写)/版本库
⑤启动SVN服务
输入命令:systemctl start svnserve.service
输入命令:systemctl enable svnserve.service
开启匿名访问
vim 版本库根目录/conf/svnserve.conf
anon-access = write
关闭selinux
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot
6.Eclipse访问SVN服务器
①Eclipse中的SVN插件
[1]简介
Subversive:Eclipse团队开发的SVN插件。 安装麻烦点,使用很爽
Subclipse:Apache的SVN团队开发的Eclipse插件。安装很爽,使用容易出错
我们安装Subversive
[2]安装过程
install
②创建资源库位置
③Eclipse中忽略特定文件
操作方法:
- 第一步:打开~\AppData\Roaming\Subversion\config文件
- 第二步:修改global-ignores
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_Store .settings */.settings/* .classpath .project target */target/*
④分享工程
-
第一步
工程→右键→Team→Share Project...
-
第二步
版本控制工具中选择SVN
-
第三步
选择一个已经存在的资源库位置或新建一个 可以直接点Finish(工程在SVN服务器端的目录名和工程名一致;上传工程目录的日志使用默认值)
-
第四步
确认工程根目录下子目录和文件是否全部上传
⑤常见图标含义
⑥检出
-
第一步
在Eclipse中执行Import操作
-
第二步
确认资源库位置
-
-
第三步
找到SVN服务器端工程对应的目录
-
第四步
选择检出方式
-
第五步
Finish
-
第六步
转换工程类型
⑦其他基本操作规律
资源→右键→Team→相关菜单项
⑧解决冲突
-
第一步
冲突文件→右键→Team→Edit Conflicts
-
第二步
7.Git简史
8.Git工作机制
9.Git和代码托管中心
代码托管中心负责维护远程库。
-
局域网
- GitLab
-
外网
- GitHub
- 码云
10.本地库和远程库交互机制
①团队内协作
②跨团队协作
11.Git安装
12.Git常用命令
On branch master: 在master的分支上
No Commits yet :现在没有任何的提交到本地库
Untracked files:没有追踪的文件,追踪:就是git把这个文件管理起来了
(user "git add <fiile>..." to include in what will be committed):使用git add 将这个文件包含到将要提交的地方,也就是暂存区,我们现在在工作区。
nothing added to commit but untracked files present (use "git add" to track):你没有任何要添加的文件到暂存区,但是存在未追踪的文件
git add:有二个作用:一个是让Git去追踪这个文件,另一个是让文件包含到暂存区。
Changes to be committed:检测到要被提交的修改,就是new file:hello.txt
(use "git rm --cached <file>..." to unstage):执行git rm --cached 文件名可以撤销,rm:删除,cached:缓存,把暂存区的文件删除
在(root-commit)后面有一个版本号 ,它是哈希加密的一个结果。
git commit git commit -m "日志信息" 文件名,需要先让Git去追踪,之后就可以直接提交
版本穿梭:通过版本号回到原来的版本
现在的指针指向现在的版本,只是做了一个版本的移动,没有创建新的版本。
13.分支操作
①什么是分支
在版本控制过程中,同时推进多个任务
②分支的好处
同时并行推进多个功能开发,提高开发效率 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
③分支操作
master:颜色为绿色,是现在所在的分支。
git merge 分支名 | 把指定的分支合并到当前分支上 |
什么叫合并呢?
我们同时进行二个项目的开发,做完后要将项目合并到一起。
我们先回到主干分支
然后将hotfix分支合并,可以看到他增加了一行,减少了一行。
14.GitHub操作
名称 | 值 |
---|---|
Email地址 | javawxid@aliyun.com |
GitHub账号 | BoomManager |
15.创建远程库
可以创建GitHub:有许多国外的优秀项目,但网络连接速度较慢。也可以创建码云账户:国内的代码托管中心,国内的程序员更适应些。
分享GitHub的注册与使用(详细图解)
16.远程库操作
①创建远程库地址别名
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址
②推送
git push 别名 分支
③克隆
git clone (你要克隆谁的,他的远程地址)
注意:先进入到你自己需要克隆到的目录,然后在克隆别人的远程库地址
④邀请加入团队
⑤拉取:从远程库拉取到本地库
git pull 远程库地址别名 远程分支名
我现在用了别名origin,添加别名:git remote add 别名 远程地址
17.跨团队协作
18.SSH登录
进入当前用户的家目录
$ cd ~
删除.ssh目录
$ rm -rvf .ssh
运行命令生成.ssh密钥目录
$ ssh-keygen -t rsa -C javawxid@aliyun.com
[注意:这里-C这个参数是大写的C]
进入.ssh目录查看文件列表
$ cd .ssh
$ ls -lF
查看id_rsa.pub文件内容
$ cat id_rsa.pub
复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys
New SSH Key
输入复制的密钥信息
回到Git bash创建远程地址别名
git remote add origin_ssh git@github.com:BoomManager/Repository01.git
推送文件进行测试
19.Eclipse操作
①初始化本地库
②忽略文件
编辑一个专门配置文件忽略的文件,文件名任意
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
在~/.gitconfig文件中引入上述文件
[core]
excludesfile = C:/Users/Lenovo/Java.gitignore
[注意:这里路径中一定要使用“/”,不能使用“\”]
③推送
④克隆
⑤分支操作