如何配置Git以忽略自动生成的代码中的琐碎更改(例如时间戳)?

Ian*_*son 5 c git

我正在使用一个自动生成大量C代码的工具。该工具在每次运行时为一批.c和.h文件生成代码。由于某种原因,该工具不够智能,无法识别文件何时没有实质性更改,因此在许多情况下,它只是更新每个文件顶部注释中的时间戳。否则,文件将保持不变。

git status在这种情况下运行时,有时会看到数十个或数百个文件已更改。但是,当我查看单个文件的更改时,它们中的大多数并没有真正的更改-只是时间戳的更新。我必须一个接一个地浏览每个文件,以确定是否有任何实际更改要提交。

有没有一种方法可以配置Git,使其可以忽略无关紧要的更改,例如标题注释中的时间戳?否则我将如何处理这种情况?

谢谢你的帮助。

Ian*_*son -1

我发现了一种使用Beyond Compare解决琐碎更改问题的方法。我将描述该过程,因为它涉及忽略自动生成的 C 文件中的时间戳更新,但它可以轻松适应其他情况和语言:

  1. 将 Beyond Compare 配置为 Git difftool。有关如何执行此操作的具体详细信息,请参阅此处。
  2. (可选但有用)为命令添加 Git 别名git difftool --dir-diff --no-symlinks(例如,dtd)。
  3. 进行一些更改(例如自动生成文件),然后运行git dtd以进行目录比较。Beyond Compare 将打开并向您显示更改之前/之后的文件夹比较。
  4. 打开文本比较会话窗口以查找已更改的文件之一。打开“工具”菜单并选择“文件格式”
  5. 打开“语法”选项卡,删除“注释”语法元素。
  6. 添加新的语法元素并为其指定一个有意义的名称,例如“Generation Time Comment”。
  7. 对于类别,选择“分隔”语法元素。在“文本来源”框中,输入您要忽略的文本。例如,如果自动生成的代码中的时间戳以字符串 开头* Generation Time:,请将其输入“文本来源”框中。选中“在行尾停止”复选框。
  8. 单击“保存”按钮并返回到“文本比较”会话窗口。
  9. 打开“会话”菜单并选择“会话设置”。打开重要性选项卡。
  10. 查找新的语法元素(例如“生成时间注释”)并取消选中它。这将告诉 Beyond Compare 将其视为不重要的更改。
  11. 打开比较选项卡,选择基于规则的比较
  12. 将对话框底部的下拉列表更改为“更新会话默认值”
  13. 关闭 Beyond Compare,然后通过运行git dtd命令再次重新打开它。
  14. 文件夹比较会话中仅包含时间戳更新的所有文件将显示不重要的差异。如果您想完全隐藏具有不重要差异的文件,请在“视图”菜单中关闭“忽略不重要差异”

参考: https: //www.scootersoftware.com/support.php?zz =kb_unimportantv3