iOS复习- SVN和git

450 阅读4分钟

git和SVN的简单对比

1、在很多情况下,git的速度远远比SVN快

2、SVN是集中式管理,git是分布式管理

3、git把内容按元数据方式存储,而SVN是按文件

4、SVN使用分支比较笨拙,git可以轻松拥有无限个分支

5、git没有一个全局版本号,SVN有,目前为止这是SVN相比,git缺少的最大的一个特征

6、SVN必须联网才能正常工作,git支持本地版本控制工作

7、git的内容的完整性要优于SVN:git的内容存储使用的是SHA-1哈希算法。这能保证代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

SVN工作流程和git工作流程对比

  • svn checkout -- git clone svn只下载代码,git会连同代码仓库一起下载下来

  • svn commit -- git commit svn是提交到服务器,git中是提交到本地仓库,需要使用push才能提交到服务器

  • svn update -- git pull 都是从服务器下载最新被修改的代码

分布式和集中式最大的区别在于:在分布式下,本地有个代码仓库,开发者可以在本地提交;而集中式版本控制,只有在服务器才有一个代码仓库,只能在服务器进行统一管理

Git版本备份/分支管理

 在git中不是通过拷贝代码来解决备份和开启分支的  git 直接打标签, 通过控制head指向,来回到任一版本

1.版本备份

1.建立共享库

创建文件夹shareWeibo

进入文件夹后,初始化共享库

git init ——bare

2.经理克隆项目后开发完1.0版本,打标签后,上传共享库

创建manager文件夹

进入文件夹后

git clone 共享库绝对路径

进入工作区,配置姓名,邮箱

git config user.name “manager”

git config user.email “manager@qq.com

经理创建文件,并修改部分代码,提交代码,上传到共享库,完成v1.0版本

touch main.c

open main.c:: 打开后写入abc

git add .

git commit -m “完成1.0版本开发”

git push

经理给此版本打标签,并将标签上传到共享库

git tag -a v1.0 -m “标记1.0版本”

git push origin v1.0

经理继续开发2.0版本......并提交

git add .

git commit -m “2.0部分功能”

git push

  1. 已发布版本bug修复

在以上步骤基础上做以下操作

1.牛大克隆项目,根据1.0版本创建分支,修复bug

创建niuda文件夹

进入文件夹后

git clone 共享库绝对路径

进入工作区,配置姓名,邮箱

git config user.name “niuda”

git config user.email “niuda@qq.com

根据v1.0版本建立新分支v1.0fixbug并切换到此分支

git checkout v1.0 -b v1.0fixbug::

修复bug后提交到本地版本库

 注意此处提交到的是HEAD指向的分支-v1.0fixbug

git add .

git commit -m “修复bug”

2.牛大修复bug后,打标签v1.1作版本备份,并上传共享库

git tag -a v1.1 -m “1.1版本备份”

git push origin v1.1

3.牛大上传整个分支到共享版本库

git push origin v1.0fixbug

   ———至此,分支修复bug结束,下面经理要合并分支———

1.经理从共享库更新代码到本地库

git pull

2.经理查看当前服务器都有哪些分支

git branch -r

 

3.经理切换到master分支后,将v1.0fixbug分支合并过来

git checkout master

git merge origin/v1.0fixbug -m “合并分支”

 

4.经理合并完成后提交到共享库

git add .

git commit -m “合并分支”

git push

 

5.合并完成后,可以删除共享库的分支

git branch -r -d origin/v1.0fixbug

 

6.查看版本标签,至此结束!!

git tag

SVN常用操作

去到公司的第一天,下载公司的代码到电脑上

svn checkout

 

修改了某个早已存在的旧文件,然后提交到服务器

svn commit

 

提交一个自己新建的文件到服务器

svn add -> svn commit

 

删除一个早已存在的旧文件,然后同步到服务器上

svn delete -> svn commit

 

将其他同事提交的新代码更新到自己电脑上

svn update

 

不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器)

svn revert

 

不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器)

svn revert

 

不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器)

svn update -r 版本号

 

不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器)

svn update -r 版本号