.gitignore 是否有版本控制文件的等效项?

2023-11-26

这个问题是related对以下问题:https://stackoverflow.com/search?q=[git]+%2Bassume-unchanged然而,这些问题提供的答案似乎都不能满足我的需求。

我有一个由 py​​thon 脚本生成的头文件(key_info.h)。为了聪明起见,我用一行代码控制了标头的占位符版本(key_info.h):

int i = you_need_to_run_the_key_info_gen_python_script_to_generate_this_file();

在运行 python 脚本之前,编译此代码将产生一个错误,告诉开发人员到底要做什么;运行脚本。

当然,开发人员将继续运行python脚本来生成最新版本的key_info.h,并且代码将成功编译。然后,开发人员将继续进行一系列更改,然后“git commit”他们的代码。

我们遇到的问题是 key_info.h 现在已被修改。因此,git 会将其视为修改并允许其提交。但是,此标头的生成版本不应受到版本控制。我们需要占位符版本保持不变,以便继续向开发者提供编译错误提示。

我的第一反应是使用 .gitignore 来阻止 git 在提交中获取 key_info.h。然后,.gitignore 可以在开发人员之间轻松共享,因为 .gitignore 本身是版本控制的。不幸的是,.gitignore 仅适用于不受版本控制的文件。

我的下一个想法是使用“git update-index --assume-unchanged /path/to/file”。这在本地效果很好,但我无法对其他开发人员强制执行此规则。开发人员意外提交生成的标头只是时间问题。

所以我的问题是这样的:有没有一种方法可以对文件进行版本控制,同时默默地执行一条规则,即在提交更改时忽略该文件?我真正想要的是版本控制文件的 .gitignore 。


但我无法对其他开发人员强制执行此规则

你几乎做到了:你可以让你的 key-info-gen 脚本运行git update-index --assume-unchanged /some/path.

但我认为这不是一个好主意。

我可能会选择根本不覆盖头文件。让你的Python脚本生成正确的头文件并将其写入不同的目录,并通过-I这两个目录的编译器选项,按正确的顺序。如果脚本尚未运行,则会找到版本控制的标头。如果脚本已运行,将找到用户生成的标头。然后您可以将用户生成的标头的路径放入.gitignore.

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

.gitignore 是否有版本控制文件的等效项? 的相关文章

  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 当存储在变量中时,Git 提交消息变得混乱[重复]

    这个问题在这里已经有答案了 我有一个 Git 提交 其中有一个摘要 然后是一些描述 所以当我看到提交消息时git log format B n 1
  • Git 从不同的存储库中提取分支

    我当前的存储库中只有几个文件 我想合并来自不同存储库的远程分支 从中拉出并合并一个分支github com username code git 分支装载机 然后从中拉出并合并一个分支github com username code git
  • 是否可以在 Git 项目的所有分支中执行“grep 搜索”?

    是否可以运行git grep在 Git 控件源项目的所有分支中 或者还有其他命令要运行吗 问题 如何在 Git 历史记录中 grep 搜索 提交的代码 https stackoverflow com q 2928584 6309 建议 gi
  • git checkout 裸露,并在接收后包含子模块

    如何在包含子模块的接收后挂钩中检出服务器上的裸存储库 我目前将其作为接收后挂钩 bin bash http blog ekynoxe com 2011 10 22 git post receive for multiple remote b
  • git merge 和 git merge origin 之间的区别

    这不是一个关于git merge origin branch vs git merge origin branch git merge
  • Heroku——从多台计算机部署?

    我有两台计算机 我希望它们都能够从 github 上的同一个存储库拉取 推送 并部署到 heroku 上的同一个应用程序 我知道 Heroku 允许您在另一台计算机上克隆其 git 存储库 以便它也可以链接起来 但我不希望第二台计算机克隆
  • 在 ConEMU 中显示 git 分支

    有没有办法在 ConEmu 中以视觉方式 背景或类似 在 git 中显示分支 Git 分支可以在普通的 cmd 或 Far Manager 提示符中可见 所有魔法都是通过特殊的 ANSI 序列完成的 必须选中 Inject ConEmuHk
  • 如何安装gitlab-rails?

    我正在尝试为 Gitlab 项目创建一个组访问令牌 它需要访问 gitlab rails 控制台才能执行此操作 在 gitlab 教程上 这是安装它的链接 https docs gitlab com ee administration op
  • Jira 和 git:如何反映所有分支?

    使用 git Fisheye Crucible 和 Jira 4 2 的开发基础架构 自我们在 Jira 中配置映射以来 对 Fisheye 注册存储库的提交反映在 Jira 项目和票证中 然而 似乎只有主分支上的提交才会被反映 在 Cru
  • 推送后删除敏感数据

    因此 我正在开发一个项目并添加一个 gitignore 文件以防止包含一些敏感数据 但它无法按预期工作 现在我已经推送了它 有没有办法从远程存储库中删除它 这样历史记录中就没有它的证据了 您可以在本地恢复更改 git commit amen
  • 我可以通过 ssh 将 ssh 用户名与 git 的提交关联起来吗?

    我正在尝试通过 ssh 设置共享 git 存储库 将用户公钥复制到authorized keys 我真的希望 ssh key 中的 用户名 成为存储库中提交历史记录的一部分 这样用户 joe 就不能将他的名字设置为 kate 我们需要某种责
  • git svn - cygwin下的错误

    我有 cygwin 和 git 我正在尝试使用 git 提交到 svn git svn dcommit 但它失败并出现奇怪的错误 git svn dcommit 4 main perl 5536 C cygwin bin perl exe
  • git 压缩并保留上次提交的时间戳

    考虑我有提交 A B C 如果我使用git rebase i将所有三个提交压缩为一个 我们可以 pick A squash B squash C 我看到结果提交A有其原始时间戳 如何让它继承提交的时间戳C 最后一个 我能想到的是git co
  • 通过防火墙后面的 ssh 访问 git 存储库

    我想在仅允许 http 代理访问的公司防火墙后面访问 克隆 推 拉 私有 通过 ssh git 存储库 我已经编写了一个强大的 Java 守护进程 程序 基于 JSCh 类库 它允许我利用本地和远程端口转发 我希望利用它 但当我尝试设想如何
  • 如何 git reset --hard 子目录

    UPDATE 在 Git 2 23 2019 年 8 月 中 有一个新命令git restore这样做的 请参阅接受的答案 https stackoverflow com a 15404733 946850 UPDATE 从 Git 1 8
  • SSL_connect:SSL_ERROR_SYSCALL 连接到 github.com:443

    几天后 我遇到了 Mac OS High Sierra 10 13 3 的问题 当我运行git clone like git clone github com xxx git failed它打印 LibreSSL SSL connect S
  • 如何撤消 git pull?

    由于远程源上不需要的提交 我想撤消 git pull 但我不知道必须重置回哪个版本 我怎样才能回到在远程源上执行 git pull 之前的状态 或者使其比其他答案更明确 git pull whoops git reset keep HEAD
  • 如何在git中返回到之前的版本

    我的工作站中有一个远程 git 存储库的签出副本 我不小心在本地进行了更改并推送到了远程 现在我想删除最后一次提交并返回到上一次提交 并且应将其推送到远程 如果这是带有提交消息的新提交 我没问题 怎么做 我建议不要用 force 推动另一种
  • Git:如何忽略/指定 *checkout* 文件

    如果我不想跟踪 html 文件 我可以将模式添加到 gitignore 它们将被忽略 我想知道如何做相反的事情 在结账时 我如何要求 git 仅签出某些类型的文件或不签出某些类型的文件 例如 如果我不需要 html 文件 我可以写 git

随机推荐

  • 无法在写入上下文中使用方法返回值

    我认为下面的代码应该可以工作 但事实并非如此 已编辑 现在适用于 PHP 5 5 if empty r gt getError Where getError 很简单 public function getError return this
  • 使用备用凭据通过 VBscript 进行安全 LDAP 对象操作

    我知道使用具有显式凭据的 ADsDSOobject 来连接到 AD 对象以读取属性 列出成员等 以及用于操作这些对象 添加组成员 更改属性 的 GetObject LDAP 方法等 但是有没有办法通过显式凭证来操作属性和成员资格 我指的第一
  • 如何从名称中获取选择器?

    我有一个 NSString 其中包含我想用 PerformSelector 调用的选择器的名称 如何从字符串中获取对选择器的引用 NSSelectorFromString name
  • FOSElasticaBundle 和 Doctrine Hydration

    我正忙着检查 elasticsearch 来寻找我正在开始的新项目 我目前正在运行 Symfony2 5 以及最新的 FOSElasticaBundle 等等 我正在对捆绑包的性能进行一些基准测试 我知道弹性本身非常快 但我遇到了一个小问题
  • 如何将 Ember 数据与嵌套资源结合使用

    我的应用程序后端有多种资源 为每个资源公开一个模型 所有其他资源的入口点是通过User模型 我的意思是 给定User我们可以找BlogPost 给定一个BlogPost我们可以找Comments etc 用 Ember 术语来说 我们可以说
  • 织物的独立 fabfile?

    是否可以使 fabfile 成为独立的 我不太喜欢运行外部工具 fab 如果我设法获得独立的 fabfile 我可以从 Eclipse Pydev IDE 中运行该文件 轻松调试它 使用项目配置和路径等 为什么这不起作用 from fabr
  • 序列化一个可为空的 int

    我有一个可以为 null int 的类 设置为序列化为 xml 元素的数据类型 有什么方法可以设置它 以便 xml 序列化程序在值为 null 时不会序列化该元素吗 我尝试添加 System Xml Serialization XmlEle
  • 了解 C++ 特性并使其高效

    我最近遇到了 特质 这个有趣且强大的概念 并尝试在 C 中理解 实现它们 据我了解 特征提供了一种方法 既可以扩展 调整现有代码的功能 又可以为类定义 接口 而无需使用传统继承 以及随之而来的所有开销 问题 我还看到这个概念似乎与C 中的C
  • ie 8 自定义谷歌字体的问题

    我正在研究一个site 使用自定义谷歌字体 但在 ie8 中不起作用或只是部分 左内容好 右内容 ajax 不太好 任何建议或想法为什么不那么好 Thanks 我刚刚在我的 IE9 的 IE8 中以兼容模式看到了你们的网站 我没有看到任何字
  • Select 语句中的情况

    我有一个 SQL 语句 其中包含CASE from SELECT我就是做不到 你们能给我举个例子吗CASE其中案例是条件 结果来自案例 例如 Select xxx yyy case desc case when bbb then black
  • node.js 可以将文件/文件夹发送到回收站(MacOS 上的垃圾箱)而不是 fs.unlink / fs.rmdir 吗?

    我找不到有关这个问题的任何信息 有没有办法node js将文件 文件夹发送到 bin 而不是 fs unlink fs rmdir 例如 你能做类似的事情吗sendToBin path 将文件发送至回收站 视窗 trash MacOS 而不
  • T-SQL:比较两个表 - 第二个表中不存在的记录

    If UNION ALL is an addition在 T SQL 中 减法相当于什么 例如 如果我有一张桌子PEOPLE和一张桌子EMPLOYEES 我知道如果我删除EMPLOYEES记录来自PEOPLE我将留在我的公司CONTRACT
  • 合并 querySelectorAll 返回的两个元素列表

    我想合并 document querySelectorAll 返回的两个元素列表 以下是我尝试过的但效果不好 var ca document querySelectorAll classA ca ca document querySelec
  • jQuery 选择并换行 textNode

    我想选择 div 元素内的文本并将其用 b 标签 这 b 标签应该只换行到 div 内的文本 而不是子元素内的文本 例如 p 本例中的标签 p div Testing p Some more text inside p p p asdasd
  • 如何在 JavaScript 中使用正则表达式匹配第 n 个字符之后的所有字符?

    我想匹配第 8 个字符之后的所有字符 并且不包括前 8 个 我需要一个正则表达式 因为框架 Ace js 需要一个正则表达式 而不是一个字符串 所以 这不是一个选择 var substring 123456789 substr 5 我可以在
  • Pandas DataFrame 列数值积分

    目前我有一个 DataFrame 如下所示 Device TimeSec Current 1 0 1 0 02 1 0 25 0 05 1 0 32 0 07 1 0 45 0 12 1 1 32 0 34 1 2 37 2 24 2 0
  • 如何使用 Nhibernate 进行条件求和?

    我正在尝试执行与此 SQL 代码等效的操作 SELECT ID SUM CASE WHEN myProperty 2 THEN 1 ELSE 0 END as nbRowWithValueOf2 SUM CASE WHEN myProper
  • 在 CMake 中,如何将命令的多行输出转换为列表?

    我想做这样的事情 execute process COMMAND bash c git git dir CMAKE SOURCE DIR git ls files OUTPUT VARIABLE TRACKED FILES add cust
  • Hadoop-3.1.2:Datanode 和 Nodemanager 关闭

    我尝试在 Windows 10 上安装 Hadoop 3 1 2 但数据节点和节点管理器关闭 我尝试下载 winutils exe 和 hadoop dll 文件并将其放置在 bin 目录下 我还尝试更改文件的权限并以管理员身份运行 但它并
  • .gitignore 是否有版本控制文件的等效项?

    这个问题是related对以下问题 https stackoverflow com search q git 2Bassume unchanged然而 这些问题提供的答案似乎都不能满足我的需求 我有一个由 py thon 脚本生成的头文件