文章目錄
  1. 1. 前言
    1. 1.1. 版本控制
      1. 1.1.1. 集中式 vs 分布式
        1. 1.1.1.1. Tortoise SVN
          1. 1.1.1.1.1. Visual SVN Server
          2. 1.1.1.1.2. Tortoise SVN
          3. 1.1.1.1.3. SVN实战实用
            1. 1.1.1.1.3.1. 搭建SVN Server
            2. 1.1.1.1.3.2. SVN典型目录结构
      2. 1.1.2. Git
        1. 1.1.2.1. Git安装
        2. 1.1.2.2. Git GUI
        3. 1.1.2.3. Git优势
        4. 1.1.2.4. Git知识
        5. 1.1.2.5. Git实战
        6. 1.1.2.6. Git小知识
  2. 2. Reference

前言

本篇文章是为了记录版本控制相关知识,着重学习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服务器为例:

  1. 下载安装Visual SVN
  2. 创建SVN Repository
    VisalSVNCreateRepository
  3. 设置用户成员访问读写权限
    VisualSVNUserManager
    VisualSVNGroupManager
  4. Check Out刚才创建的Repository

Note:

Mac上可以试试SmartSVN

SVN典型目录结构

SVN

  • /trunk(主干,用于所有人开发)
  • /branches(分支,用于存放多个分支副本(比如开发过程中为了保存特定节点分出来的))
  • /tags(存放标记副本)

Git

首先要记住的是Git是分布式的,和Tortoise SVN(集中式)不一样。

Git安装

Git download

安装Git没太多说的,直接下载安装即可。

安装好后就能直接使用Git了,下图是安装后通过Git Bash打开的界面:

GitBashUI

Git GUI

不习惯命令行的话,官方也有很多插件支持可视化Git操作。

Git GUI

这里本人用的是GitExtensions

GitExtensions

GitExtension UI操作:

GitExtensionCommandsUI

Note:
结合本人使用体验,TortoiseSVN相比GitExtension更方便也更不容易出问题(比如选取提交数量过多GitExtension卡死。TortoiseSVN操作和SVN操作方式类似,熟悉SVN的更容易上手和理解。)

Git优势

  1. 可离线操作(分布式,可以离线操作。 SVN集中式必须联网和服务器通信)
  2. 本地备份不需要本地存在多份实体文件(有抽象的分支概念)

  3. Small and Fast(小而快)

  4. 开源

Git知识

下面的知识主要参考:

Git 工作区和缓存区

  1. 工作区 — 简单来说,电脑中能看到的目录,就是一个工作区。
  2. 缓存区 — 在真正提交改动前会存放的地方
  3. 版本库(分本地和远程版本库) — 工作区中有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

参考下面这张图详细理解:

GitWorkFlow

更多细节学习了解参考:

Git三区(工作区,缓存区,仓库)的互操作

Git实战

主分支最新+没有冲突提交

  1. git add

    把文件添加进去,实际上是把文件修改添加到暂存区

GitAdd

  1. git commit

    提交更改,实际上就是把暂存区的所有内容提交到当前分支。git commit后还只是提交到自己的分支上,还没有推送到真正的主干分支上。

GitCommit

  1. git push origin master

    git push才是把个人分支的提交推送到主干分支上

落后更新+冲突提交

  1. git pull

    落后分支的话,我们想要提交东西到主分支我们需要先拉去主分支内容

  2. git stash

    缓存冲突文件修改,确保能git pull成功

  3. git pull

    确保正确拉倒主分支

  4. git commit + 解决冲突

    解决冲突,提交缓存区文件倒本地分支

  5. git push

    正式推送到主干分支上

从上面可以看出,要想推送最新修改如果落后或者与主分支修改文件有冲突,我们需要先缓存本地修改到缓存区,然后拉取主干分支之后在进行提交推送修改文件流程。

提交过滤指定文件或文件夹

git提供了一个.gitignore文件,方便我们编写需要过滤的规则:

1
2
3
4
5
6
7
8
9
10
# 文件以及目录过滤
# 过滤library目录
Library/
# 过滤.vs目录
.vs/
# 过滤Temp目录
Temp/
# 过滤cs工程文件
*.csproj
*.sln

详细参考:

gitignore

Git小知识

待添加…..

Reference

Visual SVN
集中式VS分布式
Git Instroduction
Git 工作区和缓存区

文章目錄
  1. 1. 前言
    1. 1.1. 版本控制
      1. 1.1.1. 集中式 vs 分布式
        1. 1.1.1.1. Tortoise SVN
          1. 1.1.1.1.1. Visual SVN Server
          2. 1.1.1.1.2. Tortoise SVN
          3. 1.1.1.1.3. SVN实战实用
            1. 1.1.1.1.3.1. 搭建SVN Server
            2. 1.1.1.1.3.2. SVN典型目录结构
      2. 1.1.2. Git
        1. 1.1.2.1. Git安装
        2. 1.1.2.2. Git GUI
        3. 1.1.2.3. Git优势
        4. 1.1.2.4. Git知识
        5. 1.1.2.5. Git实战
        6. 1.1.2.6. Git小知识
  2. 2. Reference