git 对 Microsoft Word 进行版本控制

简介:   昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见:http://www.sohu.com/a/140236495_346360。

  昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见: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
哈哈,就是这么简单,几行命令就搞定啦。大家快过来试试吧!
热爱编程,热爱机器学习! github:http://www.github.com/Lyrichu github blog:http://Lyrichu.github.io 个人博客站点:http://www.movieb2b.com(不再维护)
目录
相关文章
|
14天前
|
项目管理 开发工具 git
Python面试题:Git版本控制与协作开发
【4月更文挑战第19天】本文聚焦于Python面试中Git版本控制与协作开发的考察点,涵盖Git基础、协作流程及实战示例。面试者需理解仓库、提交、分支等核心概念,掌握常用命令,熟悉主干开发和GitFlow策略。在协作开发中,要掌握Pull Request工作流,有效处理合并冲突,并善用标签与里程碑。注意避免混淆工作区、忽视代码审查和直接在远程分支上工作等常见错误。通过实例展示了如何在GitFlow策略下合并分支和解决冲突,强调持续学习与实践以提升Git技能。
24 1
|
17天前
|
数据采集 开发工具 git
《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)
《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)
30 2
|
1月前
|
开发工具 git 开发者
Git常用命令大全:让你轻松驾驭版本控制
Git命令速查:`git init`新建仓库,`git clone`克隆,`git add`入暂存区,`git commit -m`提交,`git status`查看状态,`git log`查看历史,`git branch`创建分支,`git checkout`切换,`git merge`合并,`git pull`拉取更新,`git push`推送,`git remote -v`查看远程,`git checkout --`撤销本地修改,`git reset HEAD`取消暂存,`git reset --hard`回退版本。掌握这些,提升代码管理效率!
20 0
|
9天前
|
项目管理 开发工具 git
版本控制与源代码管理:在 Visual Basic 项目中使用 Git
【4月更文挑战第27天】本文介绍了在Visual Basic项目中使用Git进行版本控制和源代码管理的重要性。Git作为一个流行的分布式版本控制系统,具备分布式架构、高效性能和强大分支管理等特点。在项目中,需先安装Git,然后初始化仓库、添加文件和提交更改。常用操作包括查看状态、日志、创建及切换分支和合并分支。团队协作时,借助远程仓库和推送拉取命令实现代码共享。虽然Git有学习曲线,但其优势在于强大的功能、灵活性和社区支持,能提升开发效率和代码质量。通过学习和实践,开发者可充分利用Git优化协作和项目管理。
|
6天前
|
前端开发 持续交付 开发工具
【专栏:工具与技巧篇】版本控制与Git在前端开发中的应用
【4月更文挑战第30天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并、回滚等操作,促进团队协作和冲突解决。在前端项目中,Git用于代码追踪、代码审查、持续集成与部署,提升效率和质量。优化协作包括制定分支策略、编写清晰提交信息、定期合并清理分支及使用Git钩子和自动化工具。掌握Git能有效提升开发效率和代码质量。
|
11天前
|
存储 项目管理 开发工具
Git 版本控制:构建高效协作和开发流程的最佳实践
版本控制是软件开发的核心,促进团队协作与项目管理。通过制定明确的分支命名策略,遵循一致的代码提交规范,如指明提交类型和简短描述,增强了历史记录的可读性,可以清晰地组织和理解项目的结构与进展。
18 0
Git 版本控制:构建高效协作和开发流程的最佳实践
|
19天前
|
存储 开发工具 git
Git处理版本控制
【4月更文挑战第17天】Git处理版本控制
11 0
|
2月前
|
开发工具 git
Git版本控制工具详解(三)
Git版本控制工具详解
35 0
|
2月前
|
存储 网络安全 开发工具
Git版本控制工具详解(二)
Git版本控制工具详解
46 0
|
2月前
|
Shell Linux 开发工具
Git版本控制工具详解(一)
Git版本控制工具详解
90 0
Git版本控制工具详解(一)

相关实验场景

更多