如果超过一组特定的行发生更改,如何让 git 仅识别文件已更改?

2024-03-29

在我当前的项目中,我尝试使用 git 来版本控制文本文件,这些文件由生成代码的软件使用。这本身不是问题,问题是每次我生成代码时,它都会自动更新此文件的属性,例如代码生成的日期以及我的名字。

你可以想象它看起来像这样:

SomeHeader{
  -SomeProperty : x
  -NameOfUserThatGenerateCode: myName
  -DateTimeCodeGenerated: 2013-07-23 06:28
  -SomeOtherProperty: y
}

我想要的是一种告诉 git 说“没关系”的方法,如果名称和代码生成时间都发生变化(即:忽略有变化),但请注意“SomeProperty”是否更改为“z” ”。

在第二种情况下,它将提交整个文件(以及更新的自动生成的文件)。

有办法做到这一点吗?我认识到 git 确实在“文件”级别进行更改,但我希望可能有某种我可以绑定的预处理挂钩,只有当 git 尝试比较文件更改时才起作用。

对于那些关心的人,这将使我能够正确地控制狂想曲文件的版本。


我会推荐:

  • 保留这些文件的副本(作为私有文件,意味着没有版本控制):您的软件将在这些副本中生成代码
  • a clean脚本,作为内容过滤器驱动程序 https://stackoverflow.com/a/5132569/6309,在 a 中声明.gitattributes file http://git-scm.com/docs/gitattributes(详细信息见Git Pro 书籍 http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion).

这个想法是让该脚本检测,开启git add:

  • “SomeHeader”属性文件的内容
  • if the copy该文件的内容已按照您需要保留的方式发生更改(在这种情况下,您将使用该副本的内容覆盖版本化文件)
  • if the copy该文件的属性没有显着更改,在这种情况下,您无需修改​​实际的属性文件。

请注意,“保留副本”部分也可以通过内容过滤器驱动程序自动化,其中包含smudge脚本自动激活于git checkout.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果超过一组特定的行发生更改,如何让 git 仅识别文件已更改? 的相关文章

随机推荐

  • Google App 脚本中的线程

    是否可以在 Google Apps 脚本中进行线程处理 目前我正在以编程方式设置触发器来执行线程 有没有更好的办法 布鲁斯 麦克菲尔森就是一个很好的例子 他的例子Apps 脚本中的并行处理 https ramblings mcpher co
  • 我在使用 m2eclipse 时遇到构建错误,但在命令行上使用 maven2 时却没有构建错误 - 是我的 m2eclipse 配置错误吗?

    我安装了 m2eclipse 在 Eclipse 中构建一个 java 项目 我导入项目如下 Import gt Maven gt Existing Maven Projects gt Import Maven Projects gt Se
  • Intellij 检查更新:无法连接

    下面的屏幕截图已经出现好几天了 其他人看到这个吗 注意 为了确保这不是一般的连接错误 除了能够发布此软消息之外 我还进行了 github pull 这有力地表明我的网络代理已被正确禁用 并且工作正常 所以这条消息令人费解 要解决此问题 选择
  • 为什么windbg命令以.开头或者 !

    之间有什么区别吗 和 WinDbg 中有不同类型的命令 常规命令 例如kb适用于调试会话 例如 显示堆栈转储等 元命令以点为前缀 例如 load 元命令适用于调试器本身 例如 加载扩展 显示帮助等等 扩展命令以感叹号为前缀 例如 analy
  • 通过克隆/推/拉传播远程位置

    我们的项目使用了几个第三方开源库 其中一些需要自定义修改 对于每个库 我们创建了自己的本地 git 存储库 并将原始源位置添加为vendor远程 从那里克隆 根据需要修改它并将其推送到内部远程存储库 我们称之为origin 然后 这些存储库
  • 从数组公式返回单个单元格

    我想从这个公式中获得一个值 即收盘价 GoogleFinance NASDAQ AAPL close 12 13 2012 1 1 相反 此公式填充 2 个标题行 日期 收盘价 然后填充两个值 日期和收盘价 529 69 有没有办法只返回收
  • android.hardware.camera2.CaptureRequest 可以与 OpenCV 一起使用吗?

    我已经为此工作好几天了 我有一个基于 OpenCV JavaCameraView 的项目 我正在尝试与 Android 集成android hardware camera2 CaptureRequest我用来控制相机对光的敏感度的对象 Th
  • 当尝试将重复对象插入集合时,正确的 .NET 异常抛出是什么?

    我有一个 Asset 对象 它有一个属性 AssignedSoftware 它是一个集合 我想确保同一个软件不会多次分配给资产 在 Add 方法中 我检查软件是否已存在 如果存在 我想抛出异常 是否有我应该抛出的标准 NET 异常 或者最佳
  • 将 pandas 0.13.0“打印数据帧”更改为像早期版本中那样打印数据帧

    在 pandas 的新版本 0 13 0 中 数据帧 df 使用以下命令打印在一长串数字中 df or print df 而不是像以前那样进行概述 现在只能使用 df info 是否可以更改默认的 df 或 print df 命令以显示 I
  • 将 youtube url 转换为 iframe 嵌入代码

    我一直在尝试找到一个正则表达式模式来用 iframe 嵌入代码 C 替换字符串中的所有 youtube URL 显然必须提取视频 ID 以下是应匹配的 url 模式 http www youtube com watch v bSiDLCf5
  • 调用异步任务

    我正在播放广播流 我想在流中的歌曲发生变化时生成通知 我正在使用streamscraper http code google com p streamscraper 来获取当前流的元数据 并且我尝试在元数据更改时生成通知 这是我为实现此目的
  • Firebase 存储同步上传

    我正在尝试上传到 GcmTaskService 内的 Firebase 存储 我想同步上传 但所有上传方法 putBytes putFile 都是异步的 我没有找到任何方法来等待上传完成 有什么办法可以同步上传吗 是的 如果您不在 UI 线
  • 返回关联 PHP 数组的前 n 个值?

    我有一个 PHP 数组 排序后如下所示 Array 542 gt 30 588 gt 29 77 409 gt 19 9 237 gt 19 47 457 gt 17 73 410 gt 15 86 实际的数组相当长 最初 按键按顺序设置
  • 用于分割 .csv 文件的批处理文件

    我有一个非常大的 csv 文件 gt 500mb 我希望在命令提示符下将其分解为较小的 csv 文件 基本上是试图在Windows中找到Linux 分割 功能 这必须是一个批处理脚本 因为我的机器只安装了 Windows 并且请求软件很痛苦
  • 确定扑克中的获胜金额而不创建边池

    我正在尝试运行扑克模拟并拥有有关扑克桌的以下数据 每个玩家为底池贡献了多少 每个玩家的 手牌得分 翻牌后 即 如果player 0 score player 1 score 他们并列 我一直在计算每个玩家应该赢得多少 而不需要创建边池并将玩
  • 使用 Vue.Js / Inertia.js 和 Laravel 对结果进行分页

    我正在尝试在 Vue Js 中对来自 Laravel 的数据进行分页 我也在使用 Inertia js 在我的 Laravel 控制器中 我有 data participants User with groups gt select id
  • Javascript:将值返回给回调函数外部的变量[重复]

    这个问题在这里已经有答案了 我有一个非常具体的问题 希望有人可以帮助我 我对 Javascript 很陌生 对 NodeJS 则更陌生 我在用lodash s forIn遍历并添加到数组内的对象的功能 整个事情看起来是这样的 id 20 k
  • Visual Studio 2022 无法构建任何项目

    每次我在 Visual Studio 2022 中构建任何项目时 我在构建输出中得到的都是 Build started 1 gt Build started Project ConsoleApp7 Configuration Debug A
  • 使用 socket.io 处理超大消息

    我有一个 nodejs 项目 它生成多个与套接字 io 通信的进程 该进程既发送数据又接收数据 有时在功能开发过程中 其他程序员可能会犯错误 导致我的套接字基础结构代码发送超过大小 X 例如 超过 500MB 的大消息 我正在寻找一种方法来
  • 如果超过一组特定的行发生更改,如何让 git 仅识别文件已更改?

    在我当前的项目中 我尝试使用 git 来版本控制文本文件 这些文件由生成代码的软件使用 这本身不是问题 问题是每次我生成代码时 它都会自动更新此文件的属性 例如代码生成的日期以及我的名字 你可以想象它看起来像这样 SomeHeader So