0.在SVN建立项目
![](https://i-blog.csdnimg.cn/blog_migrate/55bde6153fc7760ba8a6382595799638.webp?x-image-process=image/format,png)
1.打开Cornerstone,添加远程仓库
![](https://i-blog.csdnimg.cn/blog_migrate/f912d41447ef0a300e43b91fda64e29c.webp?x-image-process=image/format,png)
2.将Cornerstone与SVN连接
![](https://i-blog.csdnimg.cn/blog_migrate/a1899b70a56e9f886ee51bdef91a2a71.webp?x-image-process=image/format,png)
3.Cornerstone的界面介绍
![](https://i-blog.csdnimg.cn/blog_migrate/e80d15129ca7f842aa138c0cac0c1cdc.webp?x-image-process=image/format,png)
4.工具条区域介绍
![](https://i-blog.csdnimg.cn/blog_migrate/920058ed339da536b19d4110c1bb1354.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/1727f46582e7e5571ebf1050b16852a1.webp?x-image-process=image/format,png)
5.将本地新建的项目传到服务器
![](https://i-blog.csdnimg.cn/blog_migrate/99b1f5a6d209cb0ee537c460610be832.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/15ba06b13d301d6f0f7c18ac736fd2b4.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/76fd0367ba009f82b6e61573b0289ca1.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/eb89294f7e0943afbe292b3b2b7bf142.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/b12c18cbd365fe91dfd200027cd43c25.webp?x-image-process=image/format,png)
6.将远程仓库中的数据复制到本地
1.checkOut:远程的会与本地的联系
2.export:在本地单独生成一个项目,不与远程仓库联系
![](https://i-blog.csdnimg.cn/blog_migrate/5599c874d95740a9bf0ea52b25e3dc7b.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/c2170a2728285717a5b20826e11b77d4.webp?x-image-process=image/format,png)
7.忽略或删除,未添加
![](https://i-blog.csdnimg.cn/blog_migrate/b2faecf06d35b3165110f09acf4c78f9.webp?x-image-process=image/format,png)
8.你在working copy下来的项目中做了修改,那么在修改之后的文件后面会有一个“M”的标志。
![](https://i-blog.csdnimg.cn/blog_migrate/bb807cdd489823ecfeb650dcf21d83b1.webp?x-image-process=image/format,png)
9.你在working copy下来的项目中新添加一个文件,那么新添加之后的文件后面会有一个“?”的标志,此时你需要点击add,添加到working copy下来的项目中,然后在commit。
![](https://i-blog.csdnimg.cn/blog_migrate/13ae9939f143501484173064726e0b01.webp?x-image-process=image/format,png)
10.你在working copy下来的项目中删除一个文件,那么删除之后的文件后面会有一个“D”的标志。
![](https://i-blog.csdnimg.cn/blog_migrate/0d8a060c0a0849dff1d958d5663405fd.webp?x-image-process=image/format,png)
11.你在文件夹中直接删除,会在Cornerstone中显示"!",此时是不可以提交的,要再Cornerstone中删除了,才可以提交
![](https://i-blog.csdnimg.cn/blog_migrate/21151c3ddfda9b6c58f48fdaef9c775e.webp?x-image-process=image/format,png)
12.更新
![](https://i-blog.csdnimg.cn/blog_migrate/9da1652df2b79526654efbc4a6c113ef.webp?x-image-process=image/format,png)
13.回退上一个版本
![](https://i-blog.csdnimg.cn/blog_migrate/f49e08f397371651d52344d0fa4d0e65.webp?x-image-process=image/format,png)
14.提交,提交的时候只需要提交改动的
![](https://i-blog.csdnimg.cn/blog_migrate/89ea35dd60823d3cbf8c22d8d18f8efd.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/8420c555fc93e1a8158dd6f42e397b71.webp?x-image-process=image/format,png)
15.备份和分支
![](https://i-blog.csdnimg.cn/blog_migrate/fab21514ed4326734e639d02b91df3b2.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/0dba427c7698fcc07df96d03cb12ff0d.webp?x-image-process=image/format,png)
16.合并:
1、分支合并到主干:在主干文件夹右键 -》 svn选择merge -》 merge from 选择分支
2、主干合并到分支:在分支文件夹右键 -》 svn选择merge -》 merge from 选择主干
(先复制本地,以防万一)合并只能在本地合并,使用merge,合并以后,解决一些问题(冲突),然后在提交到远程服务器
![](http://upload-images.jianshu.io/upload_images/2014884-e97402b18dfb9303.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](https://i-blog.csdnimg.cn/blog_migrate/5f52562efdca2db6521629f2480f3ff2.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/8e37bfb537c2932b5f68ccef10b84ba7.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/315320028db4c2777e7ca7205318c177.webp?x-image-process=image/format,png)
8.项目提交commit
17.代码冲突
冲突产生是因为同时在同一行写了不同的代码
![](https://i-blog.csdnimg.cn/blog_migrate/59fba0b7822a21e12cb80877b2d00c00.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/4cd166853cf3f8f6e95093b160615596.webp?x-image-process=image/format,png)
//解决冲突,讨论保留正确的,还是两个都保留
选中已解决冲突的文件,点击按钮resolve
![](https://i-blog.csdnimg.cn/blog_migrate/c76cf431a6a02e2e6794adbb993d144d.webp?x-image-process=image/format,png)
18.文件冲突
A同学新建⼀一个AViewController,然后Update,Commit提交,然后B同学新建⼀个BViewController,然后Update,此时会发现工程不能打开,出现如下提示:
![](https://i-blog.csdnimg.cn/blog_migrate/cc1159618604b95a2964f64fbe91d6b5.webp?x-image-process=image/format,png)
20150531132037822.png
此时说明配置文件冲突了,需要选中⼯程⽂件右键,选择显示包内容,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/cd2d6cc5870cff34f0cb524a4b3a9e36.webp?x-image-process=image/format,png)
20150531131934274.jpg
然后看到如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/b98865588058e930c73d03592963d6c0.webp?x-image-process=image/format,png)
20150531131942823.png
双击打开配置文件(project.pbxproj),然后如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/753a5c4c752e306f4f6f92ba035bf26c.webp?x-image-process=image/format,png)
20150531132120940.png
然后在Cornerstone中做如下操作:
![](https://i-blog.csdnimg.cn/blog_migrate/6bae1afcf6ca950a5a3c66ab5b99d35b.webp?x-image-process=image/format,png)
20150531132014272.png
19.删除⽂件的时候只是删除了文件的引用,然后从Finder中删除对应的文件如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/8150b33c4e252475f672bae16d258c45.webp?x-image-process=image/format,png)
20150531132023351.jpg
![](https://i-blog.csdnimg.cn/blog_migrate/7e0c1bc76207f04a33237210896e9f8e.webp?x-image-process=image/format,png)
20150531132051962.png
这个时候可以采⽤下面的方式撤销之前的删除操作:
![](https://i-blog.csdnimg.cn/blog_migrate/5d773441dfc7dfabad441c73841f648c.webp?x-image-process=image/format,png)
20150531132239721.png
如果想真正的删除相关文件,那么在Cornerstone⾥面:
![](https://i-blog.csdnimg.cn/blog_migrate/78feafa2a49b7ecce24c45141c59cc9b.webp?x-image-process=image/format,png)
20150531132137920.png
20.不能上传.a文件的解决方法
![](https://i-blog.csdnimg.cn/blog_migrate/9d7e1ebbe158bf73a90c5601751e53b2.webp?x-image-process=image/format,png)
20150531133921211.png
![](https://i-blog.csdnimg.cn/blog_migrate/de3b9d50dab70ef6642c604cf538e775.webp?x-image-process=image/format,png)
20150531132145439.png
![](https://i-blog.csdnimg.cn/blog_migrate/0922f6e505f067573022e017c11c7da0.webp?x-image-process=image/format,png)
20150531132326084.png
PS注意:
![](https://i-blog.csdnimg.cn/blog_migrate/2283aea90ad371c39c47c618be5ebaa4.webp?x-image-process=image/format,png)
1、先更新后提交,当你看到你check out下来的项目有白色圈时,说明有人已经提交了代码,这个时候,你应该先update一下,直至working copy不再显示白色圈,然后运行一下项目,确保项目没有冲突或者丢失的文件,然后在commit自己的代码。否则,会造成项目中出现多处冲突或者覆盖掉别人提交的代码。
2、在项目开发阶段,最好每次开发完一个独立的功能,或者在测试阶段,解决一个bug之后再提交代码到svn,不要连续多次重复提交,造成版本过多过杂。并且每次提交时务必填写提交信息,方便查看历史版本。