当维护一个生产系统时,我发现有时需要对文件进行即席临时更改 - 改变日志级别,在脚本中添加跟踪选项等。
在我这样做的时候,我的半自动化机制会经常出现误报:
- 如果我将更改保持未提交状态或者只是暂存状态,那么我的检测脚本就会将代码库标记为脏。
- 如果我将它们作为“临时更改提交”提交,则它们被标记为“超前于远程分支的更改”
- 如果我将它们提交到一个没有远程的新分支上,则它们被标记为“没有远程的分支”。
通常,所有这些都是需要找到尚未合并的更改,但这也意味着所有“隐藏”临时更改的方法也被封锁了。
请注意,我不想使用 --assume-unchanged,因为同一个文件通常会包含既有临时更改(我不想被提醒),也有永久更改(我想要),而查看Git中处理临时更改(不要提交)没有提供适合我所有需求的建议。
使用Mercurial时,我会研究如何使用 Mercurial Queues 来接近我想要的结果。我会创建一个包含我的临时更改的补丁,然后如果我的分析工具找到了一个补丁队列,它就会弹出它们,执行分析,然后再将它们推回去。这将有效地删除仅限于临时更改的部分,仅对我未认为是临时的更改进行分析,然后重新应用那些更改。
任何改变工作目录的方法都会影响生产系统的行为 - 例如,我们的日志记录系统每隔10秒钟检查一次日志配置更新。
那么,我怎样才能最好地向Git表明某些更改是短暂的,不应该被提交和/或合并,而其他更改则应该呢?