Git:任何方式忽略只有版本号更改的文件

时间:2013-02-26 19:16:31

标签: git versioning

我正在尝试查看在名为IP.Board的新版软件中所做的一些更改。但是,当我在我的本地仓库中运行他们的版本3.4.2和3.4.3之间的git show时,有很多文件刚刚更新了他们的版本号。

像这样:

- * IP.Board v3.4.2
+ * IP.Board v3.4.3

任何简单的方法我可以忽略这是唯一的变化文件?我猜他们的版本构建器会自动更新所有包含文件中的版本号。

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中删除:

  1. 备份您要删除的文件
  2. git rm <files>
  3. 提交
  4. 恢复文件。
  5. 编辑.gitignore并添加恢复的文件,直到git说你的工作树是干净的。
  6. 如果这不可行,那么您可以做的最好的事情就是使用充当commit hooks的脚本组合,尽可能自动化管理这些文件的过程。它仍然是一种痛苦,但不那么痛苦。我再次建议你不要走这条路。

    更新:如果您不打算自己更改这些版本号,您还可以使用filter(一个带有两个命令的脚本 - 涂抹和清洁)。当命令是涂抹时,您的脚本将删除具有版本号的行,类似于William所指出的。当命令干净时,您的脚本会重新添加行。

    请注意,这与威廉的方法之间的关键区别在于使用它,即使您在普通文本编辑器中打开文件,也不会看到版本行,因为这种方法实际上会修改文件的内容 - 而不是git的观点。因此,这可能不是你想要的 - 最安全的方法是威廉所建议的,这正在改变git看待差异的方式。

    这是more info on both these approaches