我们使用gitee + svn的形式完成这个demo
Gitee
首先在gitee上新建一个仓库,如下。
然后找到管理
在下面找到启用SVN访问
,打钩
然后返回代码
,点击克隆/下载
,选择svn
地址,记住下面的地址,到时候会用到。
SVN
首先下载乌龟客户端:根据系统位数选择相应客户端进行安装。
如果需要用命令行操作,请务必勾选command line client tool
为will be install on local hard driver
,不用命令行的跳过这一步。
然后一路next即可安装。安装完毕后,在任意地方右键查看快捷菜单。发现TortoiseSVN
即表示安装成功。
如果勾选了安装命令行工具,那么输入命令SVN,有如下提示也表示安装成功
但是此时菜单全是英文的,如果你不习惯英文,可以去下载语言包,记得下对系统位数
安装完语言包之后,可以右键进入setting
设置。
选中之后,点确定,不出意外,现在的语言已经切换到中文了。
假设项目已经存在远程服务器的仓库里,那么现在第一步就是把他检出(克隆)到本地。
填入我们在gitee部分克隆的地址,填入版本库URL,然后点击确定。
此时会弹出一个对话框让你输入账号密码,输入你的账号密码即可。记得勾选保存认证,不然每次操作都会让你输入。
等待一下就可以检出完毕。
此时在你的目录下就能看到你的项目,现在可以开始愉快的工作了。
(用下面的方式也可以看到,克隆的文件和远程服务器的一致)
Repo-browser(版本库浏览器):连接的就是你远程服务器中的项目。
checkout(检出/克隆):把远程服务器中的项目克隆到你本地。
有时候你已经在本地建立好了项目或者项目已经写完了,需要把你项目推到SVN上,此时应怎么做呢?
比如我现在有个项目叫SVNProject,我想把它传到SVN上。
右键选择版本库浏览器。
在版本库浏览器中右键
,选择添加文件夹(add folder)
,选中你想要上传的文件夹
回车之后,会弹出一个Message弹窗,务必要输入提交信息。这样别人才能知道你干了什么。
导入成功后就能看到目录已经加进来了
此时打开gitee仓库,你一样可以看到文件被加进来了
但是,不要以为上传成功就可以了。你还得重新检出(克隆)到本地,因为此刻远程服务器中的项目已经发生了变化,但本地的还没发生改变,必须重新检出(克隆)到本地,这时的项目才是受SVN控制的,务必记得!
重新检出(克隆)前:
重新检出(克隆)后
在版本库浏览器右键svnProject
检出
检出后你会发现本地项目也发生了改变
并且在项目里,右键菜单也发生了改变
蓝色代表文件已加入提交列表,但还未正式提交。
首先在本地创建一个文件我是新文件.txt
,然后右键Add,把文件加入上传提交列表中
加入完成后
你会发现文件多了个 蓝色加号
但文件此时还未提交,打开版本库浏览器(Repo-browser)就可以发现文件并未存在于远端服务器中,这样说明
蓝色+号代表文件已加入提交列表,但还未正式提交。
绿色代表文件已经同步到远端服务器项目。
在项目内右键SVN commit
(提交),进入提交页面,如下(svn会自动找出Add后的文件)
确认提交后,就会将文件提交到远端服务器项目中。
此时在gitee中可以看到提交后的文件,也可以在版本库浏览器中看到(Repo-browser)
并且蓝色+号变成了绿色的勾勾。说明
绿色代表文件已经同步到远端服务器项目中。
红色代表文件已修改
假如我现在在我是新项目.txt
中加了一行字,然后保存。
发现现在变成了红色,红色表示已修改,文件修改只需再次(svn commit)提交即可。
记得随时检查你的文件状态,如果没有添加到版本控制里要及时添加进去,不然你的文件提交不上去。
删除很简单,本地删除了文件,如果要同步到远程服务器项目中的话,也需要提交。
假如你和B同学在协作。B同学写完代码提交到了SVN上,如果你想获取最新修改,就需要选择更新(如果服务器上已经有别人提交过的新的,你是提交不上去的,必须先更新再提交),如
A
让开,我要开始装逼了A!
左青龙,右白虎,老牛在胸间,刀口在胸前
BB
让开,我要开始装逼了B!
看我的左鞭腿,右刺拳!
此时A提交后,就会报错,提示必须先提交更新。
但怎么知道服务器有没有更新?可以在提交之前右键更新
一下
或者右键检查修改,然后检查版本库,就能看到服务器上改了哪些文件。
绿色的表示修改过的。双击文件查看详情
左边代表服务器上的代码,右边表示本地的代码
有冲突的话我们就需要Svn update(更新)下来解决冲突
更新后,会产生多个文件,你只需打开那个冲突文件,按照需求解决冲突即可
比如我这样解决冲突
冲突解决后,还需要告诉SVN冲突已解决
这样代表冲突已解决。
此时A中的代码就是解决冲突后的代码
此时再提交,就不会出现与B提交的代码冲突了,会把解决冲突后的A代码直接覆盖到文件中。
在gitee可以看到,确实是把解决冲突后的A代码覆盖上去了。
选择显示日志,可以看出团队里面的人干了什么。
可以看出谁谁谁,什么时间,干了什么事。最后那一列信息是自己提交的时候写的。建议大家提交时务必要填写提交信息,这样别人一看就知道你干了什么。提交信息对于自己也是有好处的,时间长了也能看到当初做了什么。
情况一:代码已改,但还未提交,可以使用(revert)还原功能。
比如我在我是新文件.txt
,加入下面的代码
一giao窝里giao giao
但我觉得这句话太Low了,不符合我的气质,可我已经保存了,就可以使用(revert)还原回未修改的阶段
还原成功后
情况二:代码已改,且已提交(commit),可以使用版本回滚功能。
比如我写了如下代码,且不小心提交了。
右键文件(update to revision)更新至版本,通过查看日志来选择版本,然后回滚即可
比如我想回到上一个版本。就是6
确认后,文件就回退到了上一个版本
不过有时我们不止是想回退这个文件的版本,而是想回退到整个项目的上一个版本,此时我们可以新建个文件夹检出(克隆)指定版本。
一般开发的项目都不会只有一个版本,通过不断的迭代我们会逐渐拥有多个版本的项目代码,一般是如何进行版本的控制的呢。
版本控制有好几种方法,如下。
每次发布一个版本时应该打标签。右键选择分支/标记。在至路径以版本号打上标签即可
锁定和解锁
当项目在本地时不想被他人修改,可以选择锁定文件
锁定后别人边无法编辑你的文件,如果需要解锁,使用Release lock
文件对比
Diff later表示
Diff with '文件':表示对比该远程文件与本地文件