git 对 Microsoft Word 进行版本控制

  昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见: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哈哈,就是这么简单,几行命令就搞定啦。大家快过来试试吧!
时间: 2025-01-07 02:27:20

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

Microsoft Word 控件Essential DocIO下载及介绍

Essential DocIO是一款强大的.NET控件,可用于读取Microsoft Word 文件,使你的应用程序可以很容易地创建丰富的Word文档,支持多种像Office word一样的操作,可以导出为多种文件格式,对文档进行格式化等,开发人员可以使用该控件创建出像Word一样的报表文档. 具体功能: 仅需要一行代码就可以创建出一个新的Word文档,并可以进行很多自定义选项,如:插入片段.段落.书签.图片等 所有标准和自定义属性都可以查看和修改 支持创建和取得文档里的变量 支持设置页边距 当

ASP.NET里创建Microsoft Word文档

原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 本文是应在ASP.NET里创建Microsoft Word文档之需而写的。这篇文章演示了在ASP.NET里怎么创建和修改Microsoft Word文档。 [背景]      自动化是一种能让各种语言编写的(如:Visual Basic.NET或C#)应用程序在程序级别上控制其他应用程序。      对于Word的自动化允许你执行诸如创建新的文档,向文档里添加文本,邮件合并和格式化文档这些操作。在Word和其他

Asp.net 在配置Microsoft Excel、Microsoft Word应用程序权限时 error: 80070005 和8000401a 的问题

Asp.net 在配置Microsoft Excel.Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005. 控制面板->管理工具->组件服务->计算机->我的电脑->DCom配置->找到Microsoft Word文档之后单击属性打开此应用程序的属

Java操作Microsoft Word之jacob

转自: 现在我们一起来看看,用Java如何操作Microsoft Word. jacob,官网是http://danadler.com/jacob 这是一个开源的工具.最新版本1.7 官方的解释是:The JACOB Project: A JAva-COM Bridge 这是官方对下载文件的说明: jacob.jar: a JAR file for the java classes which you must add to your CLASSPATH. The package names r

Umbraco 7 支持Microsoft Word 2013 发布内容

本文介绍如何使用Microsoft Word 2013 编写或编辑你的Blogs或新闻页面,甚至不需要打开浏览器, 我将分成两部分来讲. 概述 本例实采用的是Umbraco 7.2 版本,首页效果: 配置用户内容频道 进入管理员后台,点击你要配置的用户名,单击"内容通道"选项卡(如下图) 名称:随意填写个标题 默认打开内容项:点击选择,会出现右侧导航窗口,选择你要发布项目节点. 文档类型:选择你要发布的内容节点 描述字段:这里的内容就是Word里的内容 其它的都可以省略了. 模板配置

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

在毕设论文整理中,段前距的设置和页眉的设置不起作用,这着实让我脑袋疼.网上搜索了几种方式,搭配一下还是起了作用. 一. 段前距设置 1. 各级标题在首页,段前距设置不起作用. 选择要段前分页的段落,右键—段落—换行和分页选项卡中勾选“段前分页”,确定. 2. 其它内容在首页,段前距设置不起作用. 显示或隐藏格式化标记,在Microsoft Word 2010中,删除相应的标记. or 在选择要分页的段落前,插入分页符Page Break.此方法还需做额外操作. 二. 页眉设置 各章的页眉需与标题

Git实战(一)版本控制概述

从今天开始,我们学习一下分布式版本控制系统Git的相关内容.在了解Git之前,我们先来对版本控制系统做一个宏观的介绍. 什么是版本控制 版本控制是指通过对文件内容的变化进行记录,并为每次的变化进行编号,以便将来查阅文件的修订情况.有了版本控制之后,就可以比较文件变化的细节,以便将某个文件回溯到之前某个时间点的状态,从而解决由于文件变化过程中出现的怪异问题. 版本控制到目前为止的相关产品有很多,大致可以分为三类,分别是本地版本控制系统.集中式版本控制系统和分布式版本控制系统. 本地版本控制系统 本

如何优雅地在 microsoft word 插入代码块

如何优雅地在 microsoft word 插入代码块 标签: 插入代码优雅microsoft word文档 此步骤适用于文档中需要插入代码或者某些特定的段落 1. 选择菜单表格 2. 选择1*1表格 3. 设置字体 4. 在表格下选择底纹为灰,边框为无边框 至此一个能够拷贝.良好显示的代码块已经完成 使用另存为PDF格式,没有语法和单词检查,看上去漂亮多了,和在xcode中没什么两样,同时还能拷贝代码

Tab stop in Microsoft Word

Keywords: Office Word Tab stop A tab stop is a term used to describe the location the cursor stops after the tab key is pressed. Tab stops are used in word processors to enable users to align text by pressing the tab key. Below is a picture of the ru