在Github上查看.docx文件并在.docx文件格式上使用git diff

sc4hvdpw  于 2022-11-20  发布在  Git
关注(0)|答案(7)|浏览(288)

我有两个问题:
1.有没有办法在Github上查看.docx文件?我们已经把所有的作业都上传到Github上了,但是没有办法在浏览器中查看。如果我们可以在浏览器中查看那些.docx文件而不下载文件,那就太好了。
1.如何在.docx文件格式上使用git diff?我尝试使用catdoc,但它不适合我。我想我以前在Windows上使用git diff来处理.doc,但它不适合我在Mac上使用。
谢谢你,谢谢你

flvtvl50

flvtvl501#

1.回答第二部分的问题。已经是一个老帖子,但弹出前10名没有答案。使用以下设置,你会得到一个穷人的diff对docx文件。
在. git属性中用途:

*.docx diff=zip

在.git/config中用途:

[diff "zip"]
      textconv = unzip -c -a

作为奖励,我的旧word/excel和新word/excel设置:
在. git属性中用途:

*.doc diff=word
*.xsl diff=excel
*.xlsx diff=zip
*.docx diff=zip

在.git/config中用途:

[diff "word"] 
    textconv = strings
[diff "excel"]
    textconv = strings
[diff "zip"]
    textconv = unzip -c -a
0lvr5msh

0lvr5msh2#

回答你的第二个问题-
通常当你尝试

git diff filename.docx

您将获得以下格式的输出-
二进制文件a/文件名. docx和b/文件名. docx不同
没有太大帮助。一个完美的解决方法是使用Pandoc

  • 从以上链接在您的系统上安装Pandoc。
  • 创建或编辑文件~/.gitconfig(Linux、Mac)或“c:\Documents and Settings\user.gitconfig”(Windows)以添加(或使用git config --global --edit
[diff "pandoc"]
     textconv=pandoc --to=markdown
     prompt = false
[alias]
     wdiff = diff --word-diff=color --unified=1`
  • 在git控制的目录中,创建或编辑.docx文件的.gitattributes(linux,Windows和Mac)以添加
*.docx diff=pandoc
  • 你可以提交**.gitattributes**,这样它就可以在其他电脑上使用,但是你需要在每台你想使用的新电脑上编辑~/.gitconfig。
  • 现在,您可以看到一个漂亮的彩色差异,其中包含自上次提交以来对.docx文件所做的更改
git wdiff file.docx

更多详细信息请参见here

vc6uscn9

vc6uscn93#

在Linux Mint 19.3上,公认的解决方案(使用strings / unzip)对我来说不是很好用。下面的代码似乎对大多数doc/docx/rtf/xls文件以及它们的LibreOffice对应文件都很好用。其中一些可以通过cygwin/git bash在Windows上工作,但我没有测试过;如果我提到的包在cygwin/git bash中不可用,那么我会寻找进行相同转换的python/perl脚本,并用它们来代替。
1.安装先决条件:sudo apt install git pandoc catdoc odt2txt .
1.注意cadoc和odt 2 txt包含了多个处理doc/xls/ppt/odt/ods/odp格式的工具,而不仅仅是包名中的那些。
1.我希望我的属性以Global (e.g. User-scoped)的形式应用,而不是像其他答案中那样以每个项目的形式应用。要创建用户作用域的git属性文件,请使用mkdir ~/.config/git/ && touch ~/.config/git/attributes(在Windows上应该是mkdir "%USERPROFILE%\.config\git" && echo "" > "%USERPROFILE%\.config\git\attributes"
1.安装git属性文件(根据需要,可以是上一步中提到的用户作用域文件或项目作用域文件${projectDir}/.git/info/attributes):

# handle windows *.reg files (utf-16 which git doesn't normally like)
    *.reg diff=utf16

    # handle misc common document formats
    *.pdf diff=pdf
    *.rtf diff=catdoc

    # handle libre/open document formats
    *.ods diff=ods2txt
    *.odp diff=odp2txt
    *.odt diff=odt2txt

    # handle older common ms document formats
    # note: ppt did not work for me
    *.doc diff=catdoc
    *.ppt diff=catppt
    *.xls diff=xls2csv

    # handle newer zipped ms document formats
    # note: pptx and xlsx did not work for me
    *.docx diff=pandoc
    *.pptx diff=pandoc
    *.xlsx diff=pandoc

1.创建.gitconfig定义(在用户作用域~/.gitconfig中或在项目作用域${projectDir}/.git/config中)。

[core]
        autocrlf = false
    [diff]
        guitool = kdiff3
    [diff "odp2txt"]
        textconv = odp2txt
        binary = true
    [diff "odt2txt"]
        textconv = odt2txt
        binary = true
    [diff "ods2txt"]
        textconv = ods2txt
        binary = true
    [diff "catdoc"]
        textconv = catdoc
        binary = true
    # note catppt did not work for me
    [diff "catppt"]
        textconv = catppt
        binary = true
    [diff "xls2csv"]
        textconv = xls2csv
        binary = true
    [diff "xlsx2csv"]
        textconv = xlsx2csv
        binary = true
    [diff "pandoc"]
        textconv=pandoc --to=markdown
        prompt = false
    [diff "pdf2txt"]
        textconv=pdf2txt
        binary = true
    [diff "utf16"]
        textconv = iconv -c -f UTF-16LE -t ASCII

即使从their github page下载了最新版本的pandoc,我也从来没有能够成功地让diffs为xlsx、ppt或pptx工作。(v1.19.2.4 from 2016).对于我使用的xlsx/pptx示例,我总是得到“无效UTF-8流致命”(旧版本)或“UTF-8解码错误”(新版本).
这可能是由于我使用的示例文件(一些来自Web的示例和一些我通过转换LibreOffice文档创建的示例)、我的系统设置、我使用的版本或其他原因。
为了完整起见,在安装了较新的pandoc之后,我使用的是:

$ uname -vipor
5.3.0-40-generic #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC 2020 x86_64 x86_64 GNU/Linux

$ dpkg -l catdoc odt2txt pandoc git xlsx2csv|grep '^ii'
ii  catdoc         1:0.95-4.1          amd64        text extractor for MS-Office files
ii  git            1:2.17.1-1ubuntu0.5 amd64        fast, scalable, distributed revision control system
ii  odt2txt        0.5-1build2         amd64        simple converter from OpenDocument Text to plain text
ii  pandoc         2.9.2-1             amd64        general markup converter
ii  xlsx2csv       0.20+20161027+git5785081-1 all          convert xslx files to csv format

编辑:我也试过用xlsx2csv包来代替pandoc进行xlsx转换,我也遇到了问题。可能是我的样本有问题,但是因为我没有做任何特别的事情来创建它们,所以我认为这是xlsx 2csv/pandoc的覆盖率差距/限制。

wrrgggsh

wrrgggsh4#

有没有办法在Github上查看.docx文件?
还没有(2016年第4季度),除非Word文档是纯文本。
如何在.docx文件格式上使用git diff?
自从git for Windows 1.9.5,和Git for Windows 2.5.3(2015年9月,和issue 355),你不必做任何自定义设置:

git diff -- myWord.docx

这样就可以了。(对于.doc.pdf也可以)
因为Git for Windows 2.10.1,你也可以对.docm.dotm求差(参见PR 128)。
jifb在注解中添加:
docx等支持基于调用的文件转换可执行文件odt2txtantiworddocx2txt.pl)和pdftotext(在系统范围的gitattributesgitconfig中配置)。
rtf文件不会被转换(在Git for Windows 2.28.0中简单的“cat“),但如果是由“旧”程序(如Wordpad/Ted)生成的,则未转换的rtf也是相当的。

b91juud3

b91juud35#

在对Stackoverflow和Google三心二意地转悠了几年之后,我今天才发现官方的git书有一个walkthrough
1.安装docx2txt。在Ubuntu 16.04上,我只使用了官方存储库:

sudo apt-get install docx2txt

1.编写 Package 脚本(docx2txt需要一些参数),如下所示:

#! /usr/bin/env bash
docx2txt "$1" -

1.我把这个脚本命名为d2t,所以我把它添加到我的$PATH中的一个文件夹里。记得把它设置成可执行的,这样git就可以运行它了。

chmod +x d2t
mv d2t /somewhere/in/your/PATH

1.现在,通过将这个块添加到.git/config中,让仓库知道这一点:

[diff "word"]
    textconv = d2t
  • 注意:book建议使用一个命令,我假设您也可以将该命令与--global标志一起使用,以便将此筛选器应用于所有存储库(如果您愿意):
git config --global diff.word.textconv d2t

1.对于您希望使用此功能的存储库,请编辑.gitattributes

*.docx diff=word

1.现在你应该能够git diff你的docx文档。

diff --git a/goodpoint.docx b/goodpoint.docx
index 0d6e78c..4476023 100644
--- a/goodpoint.docx
+++ b/goodpoint.docx
@@ -1,7 +1,7 @@
 Making many good points

  1. Overview
-- 2l3k23lk
+- this is a test
 - 23lkjl2k3j

  2. Remarks

编辑:在git 2.7.4上试过了。你不能在补丁中不做更多的工作就使用checkoutadd

polkgigr

polkgigr6#

一个.docx文件实际上是一个zip文件(你可以改变文件类型并在里面查看)。如果.docx被当作一个目录,那么在主文件里面存储的是一个XML样式文件,它是文本文件,而不是二进制文件。
遗憾的是没有回车符。否则在目录中对'document.xml'文件进行文本比较将非常有用。作为XML文件,文件中的换行符不会影响内容,因此可以添加它们。

tp5buhyn

tp5buhyn7#

这是有问题的,据我所知,这在github或其他git主机上是不可能的。虽然git可以用来版本化任何东西,但像git diff这样的东西会以纯文本的形式返回两个版本的差异。难以辨认。
我觉得这并不是没有原因的。世界上有无限的文件格式,其中很多都是专有的。因此,Git不支持像VLC这样的每一种格式,而是使用文本文件。
另外,即使git支持docx,它也无法在终端中显示格式更改,更不用说cmd了。如果只是文本,最好将其存储为文本文件。或者手动 checkout 以前的版本来比较更改。

相关问题