版本控制
前言
本篇文章是为了记录版本控制相关知识,着重学习Git的使用。
版本控制
在项目开发过程中,对项目代码进行维护保存,对于多个人协同工作记录下每一次的变更记录,方便日后查看以及恢复。
主流的版本管理工具比如Tortoise SVN,P4,Git等。
集中式 vs 分布式
这里不对版本管理工具做太深入的学习讲解。
参见:
集中式VS分布式
分布式工作流:
集中式工作流:
Note:
Tortoise SVN是集中式。
Git是分布式。
Tortoise SVN
Visual SVN Server
VisualSVN Server allows you to easily install and manage a fully-functional Subversion server on the Windows platform.(VisualSVN Server是一个在WIndows上帮助我们快速搭建Subversion server的工具。)
Tortoise SVN
TortoiseSVN是一个Windows平台下的Subversion用户端软件.
前者是针对Server端,后者是针对Client端。
两者结合使用就能实现版本管理控制。
SVN实战实用
搭建SVN Server
详细设置步骤参考:
VISUALSVN SERVER // Getting started
How to use VisualSVN Server and TortoiseSVN client
个人工作的话,可以只搭建本地服务器。(未测试Jenkins是否能使用本地服务器)
为了多人共享工作(打包IOS需要Mac),我们需要搭建一个SVN服务器用于存放我们的原始文件。
以下以多人共享工作,搭建SVN服务器为例:
- 下载安装Visual SVN
- 创建SVN Repository
- 设置用户成员访问读写权限
- Check Out刚才创建的Repository
Note:
Mac上可以试试SmartSVN
SVN典型目录结构
SVN
- /trunk(主干,用于所有人开发)
- /branches(分支,用于存放多个分支副本(比如开发过程中为了保存特定节点分出来的))
- /tags(存放标记副本)
Git
首先要记住的是Git是分布式的,和Tortoise SVN(集中式)不一样。
Git安装
安装Git没太多说的,直接下载安装即可。
安装好后就能直接使用Git了,下图是安装后通过Git Bash打开的界面:
Git GUI
不习惯命令行的话,官方也有很多插件支持可视化Git操作。
这里本人用的是GitExtensions
GitExtension UI操作:
Note:
结合本人使用体验,TortoiseSVN相比GitExtension更方便也更不容易出问题(比如选取提交数量过多GitExtension卡死。TortoiseSVN操作和SVN操作方式类似,熟悉SVN的更容易上手和理解。)
Git优势
- 可离线操作(分布式,可以离线操作。 SVN集中式必须联网和服务器通信)
本地备份不需要本地存在多份实体文件(有抽象的分支概念)
Small and Fast(小而快)
- 开源
Git知识
下面的知识主要参考:
- 工作区 — 简单来说,电脑中能看到的目录,就是一个工作区。
- 缓存区 — 在真正提交改动前会存放的地方
- 版本库(分本地和远程版本库) — 工作区中有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
参考下面这张图详细理解:
更多细节学习了解参考:
Git实战
主分支最新+没有冲突提交
git add
把文件添加进去,实际上是把文件修改添加到暂存区
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。git commit后还只是提交到自己的分支上,还没有推送到真正的主干分支上。
git push origin master
git push才是把个人分支的提交推送到主干分支上
落后更新+冲突提交
git pull
落后分支的话,我们想要提交东西到主分支我们需要先拉去主分支内容
git stash
缓存冲突文件修改,确保能git pull成功
git pull
确保正确拉倒主分支
git commit + 解决冲突
解决冲突,提交缓存区文件倒本地分支
git push
正式推送到主干分支上
从上面可以看出,要想推送最新修改如果落后或者与主分支修改文件有冲突,我们需要先缓存本地修改到缓存区,然后拉取主干分支之后在进行提交推送修改文件流程。
提交过滤指定文件或文件夹
git提供了一个.gitignore文件,方便我们编写需要过滤的规则:
1 | # 文件以及目录过滤 |
详细参考:
Git小知识
待添加…..