- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Git 属性
一些设置项也能被运用于特定的路径中 ,这样 ,Git 以对一个特定的子目录
或子 件集运用那些设置项。这些设置项被称为 Git 属性 ,可以在你目录
中的.gitattributes 件内进行设置 (通常是你项目的根目录 ),也可以当
你不想让这些属性 件和项目 件一同提交时 ,在.git/info/attributes进
行设置。
使用属性 ,你可以对个别 件或目录定义不同的合并策略 ,让 Git 知道怎
样比较非 本 件 ,在你提交或签出前让 Git 过滤内容。你将在这部分了
解到能在自己的项目中使用的属性 ,以及一些实例。
二进制 件
你可以用 Git 属性让其知道哪些是二进制 件 (以防 Git 没有识别出
来 ),以及指示怎样处理这些 件 ,这点很酷。例如 ,一些 本 件是由
机器产生的 ,而且无法比较 ,而一些二进制 件可以比较 — 你将会了解到
怎样让 Git 识别这些 件。
识别二进制 件
一些 件看起来像是 本 件 ,但其实是作为二进制数据被对待。例如 ,
在Mac上的Xcode项目含有一个以.pbxproj结尾的 件 ,它是由记录设置
项的IDE写到磁盘的JSON数据集 (纯 本javascript数据类型 )。虽然技
术上看它是由ASCII字符组成的 本 件 ,但你并不认为如此 ,因为它确实
是一个轻量级数据库 — 如果有2人改变了它 ,你通常无法合并和比较内
容 ,只有机器才能进行识别和操作 ,于是 ,你想把它当成二进制 件。
让 Git 把所有pbxproj 件当成二进制 件 ,在.gitattributes 件中设置
如下 :
*.pbxproj -crlf -diff
现在 ,Git 会尝试转换和修正CRLF (回车换行 )问题 ,也不会当你在项目
中运行git show或git diff时 ,比较不同的内容。在Git 1.6及之后的版本
中 ,可以用一个宏代替-crlf -diff :
*.pbxproj binary
比较二进制 件
你可以使用 Git 属性来有效地比较两个二进制 件 (binary files ,译注 :
指非 本 件 )。那么第一步要做的是 ,告诉 Git 怎么把你的二进制 件
转化为纯 本格式 ,从而让普通的 diff 命令可以进行 本对比。但是 ,我
们怎么把二进制 件转化为 本呢 ?最好的解决方法是找到一个转换工具
帮助我们进行转化。但是 ,大部分的二进制 件不能表示为可读的 本 ,
例如语音 件就很难转化为 本 件。如果你遇到这些情况 ,比较简单的
解决方法是从这些二进制 件中获取元数据。虽然这些元数据并不能完全
描述一个二进制 件 ,但大多数情况下 ,都是能够概括 件情况的。
下面 ,我们将会展示 ,如何使用转化工具进行二进制 件的比较。
边注 :有一些二进制 件虽然包含 字 ,但是却难以转换。 (译注 :例如
Word 档。 )在这些情况 ,你可以尝试使用 strings 工具来获取其中的
字。但如果当这些 档包含 UTF-16 编码 ,或者其他代码页
(codepages ),strings 也可能无补于事。strings 在大部分的 Mac 和
Linux 下都有安装。当遇到有二进制 件需要转换的时候 ,你可以试试这
个工具。
Word 档
这个特性很酷 ,而且鲜为人知 ,因此我会结合实例来讲解。首先 ,要解决
的是最令人头疼的问题 :对Word 档进行版本控制。很多人对Word 档
又恨又爱 ,如果想对其进行版本控制 ,你可以把 件加入到 Git 库中 ,每
次修改后提交即可。但这样做没有一点实际意义 ,因为运行git diff命令
后 ,你只能得到如下的结果 :
$ git diff
diff --git a/chapter1.doc b/chapter1.doc
index 88839c4..4afcb7c 100 44
Binary files a/chapter1.doc and b/chapter1.doc differ
你不能直接比较两个不同版本的Word 件 ,除非进行手动扫描 ,不是吗 ?
Git 属性能很好地解决此问题 ,把下面的行加到.gitattributes 件 :
*.doc diff=word
当你要看比较结果时 ,如果 件扩展名是doc ,Git 调用word过滤器。
什么是word过滤器呢 ?其实就是 Git 使用strings 程序 ,把Word 档转
换成可读的 本 件 ,之后再进行比较 :
$ git config diff .word.textc
文档评论(0)