git - 切换分支时如何忽略某些文件中的某些更改?
问题描述
我认为许多代表都有某些文件,其中包含一些敏感信息,例如哈希键、特定环境变量或某些与用户相关且不提交的特定机器配置。有没有一种方法可以在分支之间切换,而不必每次都暂存、存储和取消存储这些更改,也不必将这些文件添加到 .gitignore?
解决方案
一般来说,这是一个通用问题的实例,“如何忽略对跟踪文件的更改?” 它在 Git FAQ 中得到了回答:
Git 没有提供这样做的方法。原因是如果 Git 需要覆盖这个文件,例如在结帐期间,它不知道对文件的更改是否宝贵并且应该保留,或者它们是否无关紧要并且可以安全地销毁。因此,它必须采取安全路线并始终保护它们。
尝试使用 的某些功能是很诱人的
git update-index
,即假设不变和跳过工作树位,但这些功能不能正常工作,因此不应该以这种方式使用。如果您的目标是修改配置文件,将文件签入存储库通常会很有帮助,该文件是一个模板或一组默认值,然后可以一起复制并根据需要进行修改。这第二个修改过的文件通常会被忽略,以防止意外提交它。
在这里使用模板并忽略实际配置文件的方法特别有用,因为您绝对不会有人轻率地做了一个git add -u
然后意外地提交了他们的秘密。在这种特殊情况下,您可能会很好地处理一个被忽略的文件,该文件允许用户指定他们的所有秘密,然后根据该文件和模板生成配置文件。
另请注意,您应避免将敏感数据存储在 Git 存储库中。存储库或其中的某些文件意外泄漏(笔记本电脑被盗、服务器配置错误等)是很常见的,如果您的秘密不在存储库中,那么它们将不会被暴露。您应该使用大多数 CI 系统都有的适当的秘密存储从环境中注入这些数据。如果您需要使用配置文件,您可以使用上面提到的模板和生成脚本从环境中获取该数据并将其用于您的配置文件。
推荐阅读
- discord.py - 我的命令需要一个错误处理程序,否则我会收到很多错误
- python - PyDIP diplib 安装
- tensorflow - 如何在tensorflow 1中标准化神经网络的输出
- javascript - 更新服务工作者时,Service-worker.js 保留在内存变量中
- html - Angular 11:如何声明包含 Angular 组件的数组
- spring - 最佳实践:如何自定义 RestTemplate 自动重试失败的 api 调用?
- java - 无法使用 freemarker 模板为列表映射呈现表格
- c# - 如何修改在 HTTP 代理中发送的请求?
- visual-studio - Unity object.transform.position 返回低数字?
- sql - Packer 构建失败并出现 SQL 2014 .\SETUP.EXE 退出,错误代码为 -2068774911 Azure