gpt4 book ai didi

git - 我应该如何向 git 表明更改是暂时的并且不应提交?

转载 作者:IT王子 更新时间:2023-10-29 00:39:06 25 4
gpt4 key购买 nike

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

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

  • 如果我没有提交更改,或者只是暂存更改,那么我的检查器脚本会将存储库标记为脏。
  • 如果我将它们作为“临时更改提交”提交,它们会被标记为“远程分支之前的更改”
  • 如果我在没有远程的新分支上提交它们,它们会被标记为“没有远程的分支”。

通常,所有这些都需要找到尚未 merge 的更改,但这也意味着“stash ”临时更改的所有方式也被阻止。

注意我不想--assume-unchanged因为同一个文件通常包含临时更改(我不想被提醒)和永久更改(我这样做),并查看 Handling temporary changes (not to be committed) in Git没有解决所有这些要求的建议。

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

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

那么,我怎样才能最好地向 git 表明某些更改是暂时的,不应提交和/或 merge ,而其他更改则应该?

最佳答案

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

通过该脚本恢复文件是通过 content filter driver 自动完成的,使用 .gitattributes declaration .

/image/tumAc.png
(图片来自 "Customizing Git - Git Attributes" 来自“Pro Git book ”))

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

请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。

关于git - 我应该如何向 git 表明更改是暂时的并且不应提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com