昨天中國高校發生了一件駭人聽聞的事情,據說很多高校的校園網用戶鏈接校園網被勒索病毒給黑了,重要文件所有被加密,必需要支付贖金才能解密,具體新聞能夠參見:http://www.sohu.com/a/140236495_346360。並且還有很多是和我同樣的大四畢業狗,據說由於畢業論文沒有備份,結果被黑了,而後,而後就沒有而後了。。。真的是欲哭無淚啊。看到這個消息,我想起來個人沒寫完的畢業論文好像也沒備份,嚇得我趕忙去把論文備份到onedrive上面去了。聽說微軟以前已經打過補丁了,只是我國廣大使用盜版windows的用戶(包括我~-~)至關一部分都沒有自動更新打補丁的習慣,像我以前就特別討厭windows的自動更新,感受浪費時間,如今才知道那真的不是沒有用啊!還好win10是強制自動更新的。看來之後我得養成常常備份重要文件的習慣了,否則哪天電腦也被黑了,文件丟了,真的是欲哭無淚了。php
說到文件備份,咱們通常想到的固然就是什麼雲盤之類的啦,好比百度雲,騰訊的微雲之類的,固然對於office 文檔而言,onedrivehtml
自己就是一個很棒的備份工具。可是這些操做都有些太麻煩了,並且若是文件須要頻繁的修改,就得不停地上傳,下載,實在是太麻煩了。要是有一個能方便控制版本的工具就行了。說到版本控制,寫代碼的都知道有大名鼎鼎的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 這裏就講的很是清楚了。linux
首先,簡單介紹一下git。維基百科上是這麼介紹git的:git
git(/ɡɪt/[5], 音頻(幫助·信息))是一個分佈式版本控制軟件,最初由林納斯·託瓦茲(Linus Torvalds)創做,於2005年以GPL發佈。最初目的是爲更好地管理Linux內核開發而設計。應注意的是,這與GNU Interactive Tools[6](一個相似Norton Commander界面的文件管理器)有所不一樣。github
git最初的開發動力來自於BitKeeper和Monotone[7][8]。git最初只是做爲一個能夠被其餘前端(好比Cogito或Stgit[9])包裝的後端而開發的,但後來git內核已經成熟到能夠獨立地用做版本控制[10]。不少著名的軟件都使用git進行版本控制[11],其中包括Linux內核、X.Org服務器和OLPC內核等項目的開發流程[12]。web
簡單來講就是一個分佈式版本控制系統,著名的github網站就是創建在git的基礎上的。若是你還不會使用git,請去google 相應的教程(其實官網文檔就挺好),簡單上手使用估計半個小時就能夠了。shell
git 通常只能對純文本文件進行版本控制,可是若是有其餘中間轉化軟件的協助,就能夠對任意二進制文件進行版本控制了。word 的.doc 或者 .docx 就不是一個純文本文件,因此須要第三方轉化工具,將其轉化爲 純文本。這裏的工具就是 pandoc。pandoc ismacos
a universal document converter。便是一個通用的文檔轉換器。windows
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
看到上面這麼多眼花繚亂的格式,就知道 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 文件,加上這麼一段話:
而後在你的工程目錄下新建一個 .gitattributes(linux/mac)文件(windows是gitattributes 文件),而後寫入:[diff "pandoc"] textconv=pandoc --to=markdown prompt = false [alias] wdiff = diff --word-diff=color --unified=1
固然上面的是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文件名):*.docx diff=pandoc
這個命令會將本次修改的與上次不一樣的地方用彩色標識出來。
若是想查看 歷次的改變(all changes),可使用命令:git wdiff file.docx
git log -p --word-diff=color file.docx
4. 使用pandoc。對於你想要git 控制版本的文檔file.docx 在命令行(windows)或者unix下的shell,輸入命令:
這個命令將你的.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所示:pandoc -s file.docx -t markdown -o file.md
圖1
圖1中綠色紅筆圈出來的部分就是我上一次修改的內容。
再執行git log -p --word-diff=color How_to_live_your_college_life.docx 命令,就會把歷次修改的部分用綠色標註出來,如圖2所示(部分):
圖2哈哈,就是這麼簡單,幾行命令就搞定啦。你們快過來試試吧!