--- front: hard: 进阶 time: 15分钟 --- # 版本管理建议 ## 综述 版本管理是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理 版本管理最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。 ### 版本管理工具的必要性 - 版本管理工具是多人团队开发不可或缺的,是实现开发团队并行开发、提高开发效率的基础 - 版本管理工具对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖 - 版本管理工具通过对版本库的访问控制避免未经授权的访问和修改,有效保护企业软件资产和知识产权 ### 常用版本管理工具比较 - 一般免费的版本管理工具,最常用的就是SVN和GIT - SVN属于集中式版本控制工具 - GIT属于分布式版本控制工具 ### SVN的优缺点 - 优点1:集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手。 - 优点2:在服务端统一控制好访问权限,利用代码的安全管理。 - 优点3:所有的代码已服务端为准,代码一致性高。 - 缺点1:所有操作都需要通过服务端进行同步,这会导致服务器性能要求比较高。如果服务器宕机了就无法提交代码了。 - 缺点2:分支管理不灵活,svn分支是一个完整的目录,且这个目录拥有完整的实际文件,这些操作都是在服务端进行同步的,不是本地化操作,如果要删除分支,也是需要将远程的分支进行删除,这会导致大家都得同步。 - 缺点3:需要联网。如果无法连接到SVN服务器,就无法提交自己的代码,更别说还原、对比等操作了。如果在内网还好,网速比较稳定,同步相对比较快,如果是通过外网同步,有可能就需要同步很久。 - 缺点4:需要团队自己创建和管理代码仓库,有一定的门槛 ### GIT的优缺点 - 优点1:分布式开发时,可以git clone克隆一个本地版本,然后在本地进行操作提交,本地可以完成一个完整的版本控制。在发布的时候,使用git push来推送到远程即可。 - 优点2:git分支的本质是一个指向提交快照的指针,速度快、灵活,分支之间可以任意切换。都可以在本地进行操作可以不同步到远程。 - 优点3:冲突解决,多人开发很容易就会出现冲突,可以先pull远程到本地,然后在本地合并一下分支,解决好冲突,在push到远程即可 - 优点4:离线工作,如果git服务器出现问题,也可以在本地进行切换分支的操作,等联网后再提交、合并等操作。 - 缺点1:git没有严格的权限控制,一般是通过系统设置文件的读写权限来做权限控制。 - 缺点2:工作目录只能是整个目录,而svn可以单独checkout某个有权限的目录。 - 缺点3:git上手困难,纯使用者的学习成本相对svn来说比较高。 ### 推荐 - 针对与新团队,建议使用GIT进行代码版本管理,并使用Gitee而不是Github作为远程代码仓库 ## 使用GIT管理代码 ### 下载安装GIT - 第一步:下载git命令行:去[git官方站点](https://git-scm.com/downloads),根据自己的系统版本下载对应的命令行工具 - 第二步:下载tortoisegit可视化工具:去[tortoisegit官方站点](https://tortoisegit.org/download/),根据自己的系统版本下载对应的可视化工具 - 第三步:下载tortoisegit可视化工具中文语言包:去[tortoisegit官方站点](https://tortoisegit.org/download/),下载中文简体的Language Packs - 第四步:按照指引依次安装第一步到第三步下载的程序 ### 安装使用指引 - 文章:[使用 Gitee 进行代码管理](https://blog.csdn.net/baiketeam/article/details/82955848) - 文章:[TortoiseGit安装、配置](https://www.cnblogs.com/xiuxingzhe/p/9312929.html) - B站视频:[GIT视频教程(结合github,码云)(无废话版)](https://www.bilibili.com/video/BV1LZ4y1W7Ld?from=search&seid=9689408860061067375) - B站视频:[尚硅谷GitHub教程](https://www.bilibili.com/video/BV1pW411A7a5?from=search&seid=4400489830029833022)