昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见:http://www.sohu.com/a/140236495_346360。而且还有不少是和我一样的大四毕业狗,听说因为毕业论文没有备份,结果被黑了,然后,然后就没有然后了。。。真的是欲哭无泪啊。看到这个消息,我想起来我的没写完的毕业论文好像也没备份,吓得我赶紧去把论文备份到onedrive上面去了。据说微软之前已经打过补丁了,只是我国广大使用盗版windows的用户(包括我~-~)相当一部分都没有自动更新打补丁的习惯,像我之前就特别讨厌windows的自动更新,感觉浪费时间,现在才知道那真的不是没有用啊!还好win10是强制自动更新的。看来以后我得养成经常备份重要文件的习惯了,不然哪天电脑也被黑了,文件丢了,真的是欲哭无泪了。

  说到文件备份,我们一般想到的当然就是什么云盘之类的啦,比如百度云,腾讯的微云之类的,当然对于office 文档而言,onedrive

本身就是一个很棒的备份工具。但是这些操作都有些太麻烦了,而且如果文件需要频繁的修改,就得不停地上传,下载,实在是太麻烦了。要是有一个能方便控制版本的工具就好了。说到版本控制,写代码的都知道有大名鼎鼎的git啊!诶,对了,能不能用git 对 word文档进行版本控制呢?我突然想到这里,就用google 搜了一下,发现还真的可以。下面我就给大家介绍怎么做。

  http://blog.martinfenner.org/2014/08/25/using-microsoft-word-with-git/ 这篇文章对用git 进行word版本控制讲的比较清楚,但是有些细节遗漏了。于是我又去github上面找了一个:https://github.com/vigente/gerardus/wiki/Integrate-git-diffs-with-word-docx-files    这里就讲的非常清楚了。

  首先,简单介绍一下git。维基百科上是这么介绍git的:

git/ɡɪt/[5] 音频帮助·信息))是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools[6](一个类似Norton Commander界面的文件管理器)有所不同。

git最初的开发动力来自于BitKeeperMonotone[7][8]。git最初只是作为一个可以被其他前端(比如Cogito或Stgit[9])包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制[10]。很多著名的软件都使用git进行版本控制[11],其中包括Linux内核X.Org服务器OLPC内核等项目的开发流程[12]

简单来说就是一个分布式版本控制系统,著名的github网站就是建立在git的基础上的。如果你还不会使用git,请去google 相应的教程(其实官网文档就挺好),简单上手使用估计半个小时就可以了。

git 一般只能对纯文本文件进行版本控制,但是如果有其他中间转化软件的协助,就可以对任意二进制文件进行版本控制了。word 的.doc 或者 .docx 就不是一个纯文本文件,所以需要第三方转化工具,将其转化为 纯文本。这里的工具就是 pandoc。pandoc is

a universal document converter。即是一个通用的文档转换器。

If you need to convert files from one markup format into another, pandoc is your swiss-army knife. Pandoc can convert documents in markdownreStructuredTexttextileHTMLDocBookLaTeXMediaWiki markupTWiki markupOPML, Emacs Org-ModeTxt2Tags, Microsoft Word docx, LibreOffice ODTEPUB, or Haddock markup to

  看到上面这么多眼花缭乱的格式,就知道 pandoc有多牛逼了。当然我们这里只需要将其转化为markdown 格式。下面开始说 git 对word 进行版本控制的 步骤:

1. Install pandoc.   去http://pandoc.org/installing.html 找到合适的pandoc下载文件,然后下载安装。

2. install git

3. 如果是在 unix(linux/macosx)系统下,编辑 ~/.gitconfig 文件,如果是在windows系统下,编辑 git 安装目录下的 /mingw64/etc/gitconfig 文件,加上这么一段话:

[diff "pandoc"]
textconv=pandoc --to=markdown
prompt = false
[alias]
wdiff = diff --word-diff=color --unified=1
然后在你的工程目录下新建一个 .gitattributes(linux/mac)文件(windows是gitattributes 文件),然后写入:
*.docx diff=pandoc

当然上面的是docx文件,如果是doc文件,把docx换成doc应该也是一样的。

然后 在工程目录下初始化git(git init)
git add . 即把所有的文件都添加进去(包括.gitattributes文件)
其他的 git commit -m git remote add origin git push origin master 等都是一样的。 现在如果想要看本次修改之后与上次commit 之间的差别,可以使用命令(file.docx是你的word文件名):
git wdiff file.docx
这个命令会将本次修改的与上次不同的地方用彩色标识出来。 如果想查看 历次的改变(all changes),可以使用命令:
git log -p --word-diff=color file.docx

4. 使用pandoc。对于你想要git 控制版本的文档file.docx 在命令行(windows)或者unix下的shell,输入命令:

pandoc -s file.docx -t markdown -o file.md这个命令将你的.docx 文档转化为 .md markdown 格式。然后再 git add file.docx file.md (或者 git add .),git commit即可。

还是看我自己的一个实际的小例子吧。我在project 目录下有 一个名为 How_to_live_your_college_life.docx 的文档,在使用pandoc 转化为markdown之后,我 一次push,commit
然后我把标题改了一下,保存。在git bash 下,输入:git wdiff How_to_live_your_college_life.docx 得到结果如下图1所示:

                            图1
图1中绿色红笔圈出来的部分就是我上一次修改的内容。
再执行git log -p --word-diff=color How_to_live_your_college_life.docx 命令,就会把历次修改的部分用绿色标注出来,如图2所示(部分):

                            图2
哈哈,就是这么简单,几行命令就搞定啦。大家快过来试试吧!

git 对 Microsoft Word 进行版本控制的更多相关文章

  1. How to accept Track changes in Microsoft Word 2010?

    "Track changes" is wonderful and remarkable tool of Microsoft Word 2010. The feature allow ...

  2. 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

    会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...

  3. Microsoft Word 段前距设置和页眉设置

    在毕设论文整理中,段前距的设置和页眉的设置不起作用,这着实让我脑袋疼.网上搜索了几种方式,搭配一下还是起了作用. 一. 段前距设置 1. 各级标题在首页,段前距设置不起作用. 选择要段前分页的段落,右 ...

  4. 使用 Microsoft Word 发布博客文章

    以 Microsoft Word 2010 为例: 依次选择:文件 -> 保存并发送 -> 发布为博客文章 配置说明:新建账户 的 博客文章 URL  一栏填写 http://rpc.cn ...

  5. Microsoft Word 的键盘快捷方式

    Microsoft Word 的键盘快捷方式 全部显示 全部隐藏 本帮助文章中描述的键盘快捷方式适用于美式键盘布局.其他键盘布局的键可能与美式键盘上的键 不完全对应. 注释   本文不介绍如何为宏或自 ...

  6. Microsoft Word Regular Expression

    Microsoft Word Regular Expression Word裏的正則表達式-不一樣的符號. 一.Normal Find and Replace 二.Search by using wi ...

  7. How to automate Microsoft Word to create a new document by using Visual C#

    How to automate Microsoft Word to create a new document by using Visual C# For a Microsoft Visual Ba ...

  8. 算法提高 新建Microsoft Word文档

      算法提高 新建Microsoft Word文档   时间限制:1.0s   内存限制:256.0MB      问题描述 L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出 ...

  9. Umbraco 7 支持Microsoft Word 2013 发布内容

    本文介绍如何使用Microsoft Word 2013 编写或编辑你的Blogs或新闻页面,甚至不需要打开浏览器, 我将分成两部分来讲. 概述 本例实采用的是Umbraco 7.2 版本,首页效果: ...

随机推荐

  1. 知乎上看到的关于类.class,对象.getClass

    public class TestDemo { //测试 @Test public void fun01() { TestDemo q=new TestDemo(); A a = new A(); q ...

  2. LVS集群DR模式实例(4)

    LVS集群DR模式实例 1. 实验拓扑图 2. 实验环境 3台CentOS6.4 64bit的服务器. 类型 IP DR eth0:10.20.73.20  VIP eth0:0 10.20.73.3 ...

  3. mongodb数据库安装

    mongodb的安装 1,下载安装包: http://www.runoob.com/mongodb/mongodb-window-install.html 2,安装至:    D:\MongoDB,将 ...

  4. Java与算法之(2) - 快速排序

    快速排序的基本思路是,每次选定数列中的一个基准数,将小于基准数的数字都放到基准数左边,大于基准数的数字都放到基准数右边.然后再分别对基准数左右的两个数列分别重复以上过程.仍以4 3 6 2 7 1 5 ...

  5. Java学习笔记【持续更新】

    一个简单的java程序如下: class Sakura { public static void main(String[] arges) { system.out.println("Hel ...

  6. 免费V P N获取方式

    给需要加速器链接国外网站的朋友, 打开网址:http://miaoaff.com/reg.php?id=204250: 用一个邮箱注册,就会得到一个免费的vpn软件账号(包含300M流量时间永久): ...

  7. 原生JavaScript常用的DOM操作

    之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或 ...

  8. IDEA安装vue开发插件

    前言: 开发免不了要用到开发工具,什么sublime,webstorm,idea的,现在我就说下idea开发神器下安装vue插件进行vue项目的开发吧. idea下载地址:http://www.jet ...

  9. java IO流、集合类部分小知识点总结

    在Java中,以下三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法. InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输 ...

  10. 织梦dede在首页调用留言本

    织梦dedecms在首页调用留言本 . {dede:loop table=dede_guestbook sort=dtime row=10 titlelen=36 typeid=40 if=ische ...