我应该如何向git表明变化是暂时的并且不应该被提交?

Mar*_*oth 14 git workflow

在维护实时系统时,我发现有时需要对文件进行临时临时更改 - 更改日志记录级别,向脚本添加跟踪选项等.

当我这样做时,我的半自动机制用于查找未提交的更改和未合并的分支通常会显示误报:

  • 如果我保留未提交的更改,或者只是暂停,那么我的检查程序脚本将repo标记为脏.
  • 如果我将它们作为"临时更改提交"提交,则会将其标记为"远程分支之前的更改"
  • 如果我在没有遥控器的新分支上提交它们,它们会被标记为"没有遥控器的分支".

通常情况下,所有这些都需要找到尚未合并的更改,但这也意味着"隐藏"临时更改的每种方式也会被阻止.

请注意,我不希望--assume-unchanged,因为同一个文件通常包含临时更改(我不想提醒)和永久更改(我这样做),并查看处理临时更改(不承诺)Git没有提出满足所有这些要求的建议.

使用Mercurial,我会考虑使用Mercurial Queues来获得我想要的东西.我会用我的临时更改创建一个补丁,然后如果我的分析实用程序找到一个补丁队列,它会弹出它们,执行分析然后再推回它们.这将有效地仅删除临时更改,仅对我认为不是临时的更改执行分析,然后重新应用这些更改.

任何更改工作目录的方法的问题在于这会影响实时系统的行为 - 例如,我们的日志记录系统每10秒左右检查一次日志记录配置的更新.

那么,我怎样才能最好地指出git某些变化是暂时的,不应该被提交和/或合并,而其他变化应该?

Von*_*onC 2

对于每个文件,您都可以设置一个干净的脚本,该脚本将负责恢复这些文件最初检出时的原始内容。
该脚本可以简单地执行git checkout -- afile, 以便将其内容恢复到 HEAD(丢弃任何本地更改)。

通过该脚本恢复文件是通过内容过滤器驱动程序使用.gitattributes声明自动进行的。

https://i.stack.imgur.com/tumAc.png
(图片来自《Pro Git book 》中的《自定义 Git - Git 属性》))

一旦您在本地 git 配置中声明了该内容文件管理器驱动程序,它将自动在 上git commit恢复该文件。或者它会认为/
上的文件未更改。 git diffgit status

请参阅“最佳实践 - Git + 构建自动化 - 保持配置独立”中的完整示例。


归档时间:

查看次数:

255 次

最近记录:

8 年,2 月 前