在 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 之前隐藏文件中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Git修改提交历史

gitlab怎么通过api来获得每个文件最新的commits

未commit 执行git stash后怎么恢复

在git push前怎样遗弃掉历史commit

git commit时权限被否定问题解决

为啥有人应该在 git commit 之前使用 git add?或者为啥有人应该使用 git add 呢?