使用Git进行工作文档的版本控制

来源:互联网 发布:超市收银软件多少钱 编辑:程序博客网 时间:2024/05/22 05:28

原文在这里,参考2,入门参考

Git是什么?

前面说了那么多Git,但是Git到底是什么呢?百度百科

在程序员的世界里Git是一款自由和开源的分布式版本控制系统。但在这里我们不能这么说,因为这个系列的文章对象并非都是程序员,哪怕你不懂任何编程甚至于电脑小白。

Git是一款记录你工作的任何变动,并能保留每次工作结果的一款项目管理神器!

举个例子:

你是一个编辑,老板让你写一份产品报告,终于在2014年5月1日完成了初稿 产品报告.doc,然后因为这个报告比较重要,于是完善一下有了产品报告0502.doc。然后提交给老板,老板说这里这里不好需要修改。于是你有了产品报告0503.doc,后来在老板和客户的英明指导下,你有了产品报告0504.doc产品报告0505.doc产品报告(最终版).doc产品报告(最终版)新.doc产品报告(最终版)0510.doc产品报告(最终版)完成版.doc …..

到头来自己比谁都乱,每个版本都有一些资料想保留下来,但给老板和客户的又只有一份完成版。

而使用Git,可以实现你始终只有一个产品报告.doc,并且每一次修改的时候都能记录下当时发生了什么事,并且每个版本都能和其他版本对比,增加了哪些内容,删减了哪些内容。并且能够随时恢复到任一版本,你的归档文件夹,始终只有这一份文档!

准备工作

我们只需要两款软件

  • msysgit(下载)(如果你懂命令行,其实只需要这一款就够了)
  • TortoiseGit(下载)

msysgit 是Git核心的功能软件,而 TortoiseGit 是能够和Windows的资源管理器整合的图形化Git管理软件,

知道了这些,接下来你的步骤是:

  1. 下载这两款软件到本地
  2. 首先安装 msysgit(顺序不要错了)
  3. 再次安装 TortoiseGit(啥,你问我安装选项?除了安装路径两个软件全部一路默认好了)
  4. 顺便下载 TortoiseGit 的中文语言包,并安装(和 TortoiseGit 下载页面在一起的,别说你找不到)
  5. 安装好后在桌面点击鼠标右键,就会出现几个程序选项,如图:

  6. 接下来打开 TortoiseGit => Settings 选项,如图:

  7. 修改语言为中文(在桌面再次鼠标右键打开,是不是都变成中文了?)

  8. 修改Git.exe路径为你安装 msysgit 的bin文件夹

  9. 配置Git环境完毕,是不是很简单?

Git工作流

在这里,主要说3个Git要点,并且依照这3个要点的顺序讲述如何使用Git进行工作,然后在根据一个实例来说明Git的使用:

  • 基础知识
  • 版本分支
  • 版本对比及还原

基础知识

首先我们在E盘的 MyWork文件夹 的图标上点击鼠标右键选择“Git在这里创建版本库”,弹出的对话框不用管直接点确定(复选框不要选),随后点击ok即可。

ok,一个版本库就创建出来了。刷新或重新打开E盘,你会发现文件夹上出现了一个绿色的对勾图标,说明这个文件夹已经受到了Git的版本控制。(这个图标的出现不一定实时,也许你要多刷新几次,甚至重启电脑才行)

当你将一个文件夹使用Git创建了版本库时,会在该文件夹下出现一个叫.git的隐藏文件夹,这个也是Git控制的一些数据,如果删除该隐藏文件夹,那么所有的Git记录和数据将丢失。你可以在文件夹选项中设置不显示隐藏文件。

常见的图标及含义如下:
:这个文件(夹)很干净,是最新版本文件
:这个文件(夹)发生了修改,需要提交
:这个文件(夹)要添加进版本库
:这个文件(夹)没有在版本库中,需要添加进来(转为上一个图标的状态),或者忽略(转为下一个图标的状态)
:这个文件(夹)被忽略,不受版本控制
:这个文件(夹)里的内容发生冲突(这是最危险的情况,但是对于个人用户来说,几乎不会出现,出现的情况是两个人同时对一个文件做修改,后提交的人在更新时无法与前者完美融合时,这个不需要深入理解)

版本分支

接下来说说版本分支(Branch)。

举个例子:

你需要写一份商业策划,随后洋洋洒洒一大篇完成了这份商业策划。但突发灵感想修改一下商业策划,但又不知道是不是自己想要的,你就可以新建一个分支拷贝这份商业策划的所有资料进行修改。

当修改完成后如果你满意,就可以将这个分支与原来的主分支(Master)合并(Merge),甚至直接代替主分支。如果你感觉越改越糟,就直接回到主分支工作,仿佛什么也没有发生一样(当然这个新的分支要通过某些复杂的操作来删除,你也可以留着,作为自己惨痛教训的警钟)。

也就是说,分支为你提供了一个尝试某些新道路的空间。

版本对比及还原

还记得上一篇说的提交commit吗?

每一次工作完成之后都需要执行 提交commit,所以Git就能够记录每一次提交时的文档状况,并且能够和任一一次提交的版本进行详细对比,并且能够恢复到任一版本的状态。

实战演练

我时常会使用到wordpress程序开发各种不同的网站,所以现在我就演示一个使用wordpress给一个朋友做摄影公司网站的项目管理案例。

创建&提交

首先新建一个文件夹叫 wordpress,我的策略是所有基于wordpress开发的程序都在这个文件夹里完成,使用不同的分支来区分不同的网站项目。

右键将wordpress添加进版本库。并且添加一个文件夹叫做README.md,里面写上内容。

右键在文件夹内空白地方点击Git提交 -> "master"表示向master分支提交工作内容。

如果你第一次提交,TortoiseGit会提示你设置用户名和电子邮箱,这是因为Git可以多用户协作,填写用户名和邮箱是为了区分每次工作的提交和修改时由谁进行的。

弹出提交窗口,填写日志及勾选变更列表后点击确定(Git强制要求你写提交日志,否则不能提交,这也是一个好习惯)

ok,提交完成后你发现README.md文件签名的蓝色问号已经变为绿色对号了。

再次,我们依照README.md里的规划,将master内的文件夹目录和内容准备好,就像平时操作文件夹一样。

我做了如下事情:

  1. 修改了README.md文件,删除了一行 - Vcom:公司网站项目
  2. 新建了 WP 、 Theme 、 Plugin 、 Doning 这几个文件夹
  3. 下载wordpress3.9版本的源码,放入 WP文件夹

再次提交:

刷新发现 Doing、 Plugin、 Theme 这三个文件夹前面还是蓝色问号。这是因为Git不允许提交空的文件夹,所以新建这三个空文件夹提交不成功。我们在这三个文件夹内都添加一个README.md文档再次提交就好了。刷新看下,全绿了。

版本差异化对比

ok,现在我突然想起来,我好像改变了版本库根目录下的README.md文件,但是又记不起来改变了什么内容,怎么办?

我们在README.md文件上右键点击

选择“与前一版本比较差异”

我们可以看到,在有变化的地方会被高亮显示。

版本还原

考虑了一下,我们想回到之前的版本

右键选择“TortoiseGit => 显示日志”

在日志列表选择想要恢复到的版本,右键点击看到

有两种回到之前版本的方法,Reset 和 Revert ,他们的区别在于

  • revert 是撤销某次操作,此次操作之前的commit都会被保留
  • reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区

在这里我们使用Revert。

点击Revert后刷新发现,怎么 Doing、 Plugin、 Theme这三个文件夹还在,里面的 README.md 也还在。没错,这也是Git的聪明之处。

还记得我们之前的操作吗?看上面日志信息的那张图我们发现

  • 15:05 我们提交的内容:修改README.md文件、新建wordpress文件夹并放入内容
  • 15:11 我们提交的内容:新建 Doing、 Plugin、 Theme三个文件夹并放入文件README.md
    也就是说我们仅仅恢复了15:05分的操作,但15:11分的操作仍然存在。是不是很赞?

再次提交后我们查看日志信息

新增一次提交的日志,并且在日志说明里可以看到是Revert,下面的文件里列表双击即可打开查看这次提交都变动了什么。

下面我们将WP这个文件夹重新放入wordpress源码,并提交一次,来演示如何使用版本分支

新建分支

在文件夹内右键选择“TortoiseGit => 创建分支”,取名为Moga

再次文件夹内右键选择“TortoiseGit => 切换/检出”,切换到Moga分支

文件没变化?是的,因为我们创建Moga分支的方法属于“克隆master主分支,并创建新分支”的方式,你也可以选择其他方式来创建分支。

切换与使用分支管理文件

由于上面我们已经切换到Moga分支了,接下来我们的操作只对Moga分支有影响。

比如我们创建一个 Moga.md 文件,并提交

然后我们切换回master主分支出查看,并没有Moga.md这个文件,明白了吧!

没错,版本分支就是这样去理解。和你复制整个版本库(包括所有的日志提交信息)没有区别。唯一不同的是你的文件夹目录结构更清爽了!


ok,这篇耗时一下午的文章终于写完了。在以后的文章里我也会经常使用 Gif 和 TortoiseGit 。

Git还有很多的小技巧,就留给以后再说吧。


0 0