在 git commit 之前隐藏文件中的字符串
Posted
技术标签:
【中文标题】在 git commit 之前隐藏文件中的字符串【英文标题】:Hide a string in a file before git commit 【发布时间】:2010-02-19 00:51:14 【问题描述】:我希望每次提交对特定文件的更改时隐藏特定文件中的特定字符串。
实际上,我在一个文件中有一个不应在远程存储库中公开的 URL。有没有使用 pre-commit 和 post-commit 钩子或类似的东西来隐藏它?
目前我正在使用一个 git 存储库,但很高兴知道如何使用 svn 来做这件事。
谢谢, 西芒
【问题讨论】:
【参考方案1】:您可以将该字符串保存在单独的文件中(例如资源文件,如果您的环境支持的话),而不是将该文件置于版本控制之下。
【讨论】:
我也会这样做。就不必使用 git hooks 和有一个中心位置来存储敏感信息而言,它更干净。 +1。这对于源代码控制系统和维护特定于安装的设置都是最简单的方法。但至少有了 git,应该有办法让原计划生效,因为 git(与 svn 不同)允许部分文件提交。 是的,实际上像这样的简单解决方案会起作用。谢谢:)【参考方案2】:如果您确实必须将该文件置于版本控制之下,请使用git attribute filter driver(另请参阅GitPro book)。
过滤器驱动程序由
clean
命令和smudge
命令组成,其中任何一个都可以不指定。 在checkout
上,当指定smudge
命令时,该命令从其标准输入提供blob 对象,其标准输出用于更新工作树文件。 同样,clean
命令用于在签入时转换工作树文件的内容。
这样,smudge 引用的脚本(私有版本,仅在您的 repo 中,不由 Git 管理)可以替换编码的 URL,而 clean 脚本会将其内容恢复为编码网址。 由 git 管理并推送到任何地方的同一脚本的公共版本将做...什么都不做,并保持 URL 混淆。
【讨论】:
谢谢。这就是我一直在寻找的。span>以上是关于在 git commit 之前隐藏文件中的字符串的主要内容,如果未能解决你的问题,请参考以下文章