我正在尝试查看在名为IP.Board的新版软件中所做的一些更改。但是,当我在我的本地仓库中运行他们的版本3.4.2和3.4.3之间的git show时,有很多文件刚刚更新了他们的版本号。
像这样:
- * IP.Board v3.4.2
+ * IP.Board v3.4.3
任何简单的方法我可以忽略这是唯一的变化文件?我猜他们的版本构建器会自动更新所有包含文件中的版本号。
答案 0 :(得分:4)
这不是非常强大,但可能还不错。在.git/config
put:
[diff "remove-rev"]
textconv=sed '/IP.Board v[0-9]*\\.[0-9]*\\.[0-9]*/d'
然后在.gitattributes
或.git/info/attributes
中输入:
* diff=remove-rev
现在,只要运行git-diff
,就会在gitdiffcore决定哪些文件对不同之前将sed脚本应用于该文件。您可能需要调整sed
命令以满足您的需求,但这应该会有所帮助。
答案 1 :(得分:0)
没有。 git使用文件内容的哈希来跟踪文件的内容。当版本发生变化时,内容会发生变化,散列也会发生变化。
答案 2 :(得分:0)
不,你不能。我知道这不是你想要的,但我建议生活在这个问题上。
是的,很糟糕。但是,尝试在git级别解决它(或减轻头痛)只能确保您能够更长时间地解决问题。事实是,这是设置构建时设计选择不佳的结果。
您可以忽略这些文件,但首先必须将它们从git中删除:
git rm <files>
如果这不可行,那么您可以做的最好的事情就是使用充当commit hooks的脚本组合,尽可能自动化管理这些文件的过程。它仍然是一种痛苦,但不那么痛苦。我再次建议你不要走这条路。
更新:如果您不打算自己更改这些版本号,您还可以使用filter(一个带有两个命令的脚本 - 涂抹和清洁)。当命令是涂抹时,您的脚本将删除具有版本号的行,类似于William所指出的。当命令干净时,您的脚本会重新添加行。
请注意,这与威廉的方法之间的关键区别在于使用它,即使您在普通文本编辑器中打开文件,也不会看到版本行,因为这种方法实际上会修改文件的内容 - 而不是git的观点。因此,这可能不是你想要的 - 最安全的方法是威廉所建议的,这正在改变git看待差异的方式。