Reputation: 9051
I put several .docx
, .txt
and .pdf
file into a .git repository. I can open, edit, save the local .docx
file; however, when I push it to github, and download it back to my computer, Word complains that it cannot open it.
In order to store .docx
file on github, is there some essential steps I should do to the git settings?
Upvotes: 10
Views: 11225
Reputation: 1
The problem here is most likely a GitHub web interface quirk whereby your attempt to download the file actually produced an HTML page about the file. Using clone will, as you found, work fine.
Upvotes: 0
Reputation: 15109
Make a .gitattributes
file in your working directory and add the following line to it:
*.docx binary
core.autocrlf=false
?This is useful too. But configuring .docx
as a binary format solves not only this problem, but also potential merge issues.
From http://git-scm.com/docs/gitattributes , section "Marking files as binary". Note the italicized section.
Git usually guesses correctly whether a blob contains text or binary data by examining the beginning of the contents. However, sometimes you may want to override its decision, either because a blob contains binary data later in the file, or because the content, while technically composed of text characters, is opaque to a human reader.
.docx
format is a zip folder containting xml
and binary data, such as images.
Git treated your .docx
as a text (and not binary) file and replaced endline characters. As Microsoft-developed format, .docx
is probably using CRLF, which might have been replaced with LF in the remote repository. When you downloaded that file directly from remote, it still had LFs.
In a binary file Git never replaces endline chars, so even the files on remote repository will have proper CRLFs.
This is applicable to any file format which is a zipped package with text and binary data. This includes:
.odt
, .ods
, .odp
and others. .sxw
, .sxc
, .sxi
and others. .docx
, .xlsx
, .pptx
and others.Upvotes: 22