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最初的开发动力来自于BitKeeper和Monotone[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 markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB, or Haddock markup to
- HTML formats: XHTML, HTML5, and HTML slide shows using Slidy, reveal.js, Slideous, S5, or DZSlides.
- Word processor formats: Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML
- Ebooks: EPUB version 2 or 3, FictionBook2
- Documentation formats: DocBook, TEI Simple, GNU TexInfo, Groff man pages, Haddock markup
- Page layout formats: InDesign ICML
- Outline formats: OPML
- TeX formats: LaTeX, ConTeXt, LaTeX Beamer slides
- PDF via LaTeX
- Lightweight markup formats: Markdown (including CommonMark), reStructuredText, AsciiDoc, MediaWiki markup, DokuWiki markup, Emacs Org-Mode, Textile
- Custom formats: custom writers can be written in lua.
看到上面这么多眼花缭乱的格式,就知道 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 进行版本控制的更多相关文章
- How to accept Track changes in Microsoft Word 2010?
"Track changes" is wonderful and remarkable tool of Microsoft Word 2010. The feature allow ...
- 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)
会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...
- Microsoft Word 段前距设置和页眉设置
在毕设论文整理中,段前距的设置和页眉的设置不起作用,这着实让我脑袋疼.网上搜索了几种方式,搭配一下还是起了作用. 一. 段前距设置 1. 各级标题在首页,段前距设置不起作用. 选择要段前分页的段落,右 ...
- 使用 Microsoft Word 发布博客文章
以 Microsoft Word 2010 为例: 依次选择:文件 -> 保存并发送 -> 发布为博客文章 配置说明:新建账户 的 博客文章 URL 一栏填写 http://rpc.cn ...
- Microsoft Word 的键盘快捷方式
Microsoft Word 的键盘快捷方式 全部显示 全部隐藏 本帮助文章中描述的键盘快捷方式适用于美式键盘布局.其他键盘布局的键可能与美式键盘上的键 不完全对应. 注释 本文不介绍如何为宏或自 ...
- Microsoft Word Regular Expression
Microsoft Word Regular Expression Word裏的正則表達式-不一樣的符號. 一.Normal Find and Replace 二.Search by using wi ...
- 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 ...
- 算法提高 新建Microsoft Word文档
算法提高 新建Microsoft Word文档 时间限制:1.0s 内存限制:256.0MB 问题描述 L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出 ...
- Umbraco 7 支持Microsoft Word 2013 发布内容
本文介绍如何使用Microsoft Word 2013 编写或编辑你的Blogs或新闻页面,甚至不需要打开浏览器, 我将分成两部分来讲. 概述 本例实采用的是Umbraco 7.2 版本,首页效果: ...
随机推荐
- Java实现 中文转换成Unicode编码 和 Unicode编码转换成中文
想要实现中文字符转换为Unicode编码的话主要用到的是一个这样的包,自己可以去API文档里面查看下的 java.util.Properties; 直接进入主题吧,主要是 package Test01 ...
- 聊聊C#与冲顶大会
一.由跳一跳开始 2018年初,跳一跳小程序着实火了一把.一时间,各种攻略,甚至辅助工具也应运而生.作为.net阵营的一员,园友的这篇http://www.cnblogs.com/bqh10086/p ...
- bootstrap轮播组件之“如何关闭自动轮播”
在一个页面里使用多个bootstrap轮播组件的时候,如果还让所有轮播图都自动轮播的话,整个画面都在动,会给用户一种很不好的体验感受.所以,需要关闭轮播图的自动轮播. 关闭方法:去除如下属性即可: d ...
- 二叉排序树BST+求树深度算法
#include "stdio.h" #include "malloc.h" typedef struct node { int key; struct nod ...
- 2017ccpc哈尔滨区域赛H
n堆石子 每次只能拿一个石子从一堆移到另一堆 知道所有的堆的石子数目都能整除x(x>1) 问最小移动次数 枚举x的可能取值 即a[i]和的素因子即可 合因子的区间变化会比较大 然后求余 ...
- c#版 K线控件(Stock)
K线起源于日本米市交易,它的基本用途就是为了寻找"买卖点".股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个数据展开,反映大势 ...
- jquery dataTimePicker日历插件(精确到小时)
效果图: 下载地址:https://github.com/WangChangyao/jquery-dataTimePicker.git <!DOCTYPE html> <h ...
- Myeclipse2014 已有项目更换JDK
原先项目使用JDK是1.7,今天项目加入了一个新包,只支持JAVA8,让我们都升级一下本地的JDK,我突然发现我还没有在myeclipse上升级过JDK呢.捣鼓了一下,也不难,记录一下. 1.下载ja ...
- 用PHP,怎么获取PHP.ini中的文件上传最大的字节数。也就是默认的2M
PHP中用ini_get函数来获取服务器允许的文件上传最大字节数,如:
- 关于vueThink框架打包发布的一些问题
刚开始发布自己的vueThink项目的时候,总是出现404错误,后来经过上网查找,发现是路径的问题,这方面的知识,网上很多,就不过多阐述了.我主要想说的是自己的项目发布的时候,admin账号登录的时候 ...