我完成了一个需要我使用api_key的android项目。 我在build.gradle文件中添加了api密钥,如下所示:
buildTypes.each {
it.buildConfigField "String", "MDB_API_KEY", "\"243248324293938243\""
}
(那是一个随机数btw)
现在我完成了项目,我需要将其上传到Github,以便进行代码审查。在这之前,我被要求删除api密钥,我做了
buildTypes.each {
it.buildConfigField "String", "MDB_API_KEY", *putYaOwnApiKeyBrothar*
}
并承诺。
但是,如果我将所有内容都推送到Github,他们可以访问任何较旧的提交,并检索我的api_key。
我看过类似的问题,解决方案似乎是git filter-branch,但它似乎在提交历史记录中删除了特定的文件。 我只想删除键(或那条线),因为我想在所有提交中使用* putYaOwnApiKeyBrothar *代码。 (如果他们必须检查较旧的那个)。
这甚至可能吗?有一个简单的方法吗? 如果没有,我该怎么办? 我傻了吗?
答案 0 :(得分:3)
git filter-branch
是的方法。它有各种过滤器,您可以从历史记录中删除文件,但您也可以根据需要修改文件。在您的情况下,您希望将--tree-filter
选项与替换文件中的String的命令一起使用。像git filter-branch --tree-filter "sed -i 's/243248324293938243/putYaOwnApiKeyBrothar/' your/file/here" --tag-name-filter cat --all
(如果你在macOS(或任何* BSD)上添加'' after sed -i
)
答案 1 :(得分:0)
git filter-branch为我工作:
git filter-branch --tree-filter "sed -i "" 's/ENTER_API_KEY_TO_REMOVE/STRING_TO_REPLACE_THE_KEY/' filepath"
文件路径应包含先前存储密钥的文件名,例如/src/main/Application.java。 当您尝试将这些更改推送到GitHub时,它们可能会被拒绝,在这种情况下,请使用:
git push --force