use*_*527 12 git code-generation auto-generate gitignore
我有源代码(大部分的存储库*.php,*.js)和文档文件(主要是*.md,*.html,*.svg)自动从注释生成.所有文档都位于./doc存储库中的单独子目录()中.
一方面,我希望通过跟踪文档,git如果它发生变化,我希望它被提交/推送到服务器,因为它有一个很好的可浏览和最新文档很不方便由github显示.
另一方面,在输出git diff命令期间看到自动生成的文件是非常烦人的.例如,如果在两次提交之间更改了一行源代码,则git diff不仅会输出此单行,而且还会输出所有自动生成的文档,因为整个自动生成的文档已更改.
有没有办法告诉git跟踪文档但diff默认情况下将其排除?如果git将所有文档文件视为blob,我也会对我好.然后,至少diff只会声称文件已更改,但不会显示所有文档行每行.
Jos*_*one 11
如果git将所有文档文件视为blob,我也会对我好.
您可以使用属性.只需创建一个doc/.gitattributes包含的文件* -diff,然后该路径下的所有内容都将被视为diff的二进制文件.详情man gitattributes请见.
git diff --text当你想要查看它们的差异时,可以使用覆盖它.
git update-index我最初建议了一个涉及本地修改的解决方案(更新文件的索引( )doc/以便不检测任何差异)
cd doc
git ls-files -z | xargs -0 git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)
但是,OP 的评论是正确的:
之后
--assume-unchanged,这些文件也不会包含在提交中,直到我通过 撤消对索引的更改--no-assume-unchanged。
因此,我必须确保在每个 之前和之后直接调用两者git diff。我一直在寻找一种更“永久”的解决方案。该解决方案适用于每个在没有特别注意的情况下查看存储库的用户,并且也适用于 Github。
目前我还不能真正使用Github的“显示历史/差异”功能,因为Github在处理一定数量的文件后停止显示差异,不幸的是它只显示自动生成的文档中更改的不相关部分而不是在真正重要的文件中
我同意。
然后另一个选择是通过以下方式将所有这些doc/文件隔离在自己的存储库中:
这样(在 git 子模块 update --init 之后),您可以在主存储库中工作,并在需要时生成文档:git diff 只会显示主(父)存储库的差异,而不是(子模块)doc/。
但是,当您推送主存储库时,必须首先添加、提交和推送doc/(子模块),然后再添加、提交和推送主存储库。
这是因为doc/主存储库将其视为gitlink(SHA1,索引中的特殊条目),当您提交时,doc/它会发生变化,并且需要由引用它的主存储库进行记录。
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |