【问题标题】:Omitting specific lines when pushing to git [duplicate]推送到 git 时省略特定行 [重复]
【发布时间】:2012-01-12 01:12:48
【问题描述】:

在代码中可能有非常敏感的信息,例如密码、amazon s3 密钥等,我根本不想发送到 git。

我希望将那些非常具体的字段替换为“SECRET”或类似的内容。 另外,git private repo 能解决这个问题吗?

【问题讨论】:

  • 答案是不要把类似的东西放在被跟踪的文件中。我会建议一些重复的......
  • @RailsN00b:检查答案的编辑。我不认为你想要我添加的内容,但以防万一......

标签: ruby-on-rails-3 git


【解决方案1】:

由于 git 跟踪文本而不仅仅是文件,将这些行替换为其他一些文本将被 git 解释为对代码的更改,因此它将在下一次提交中覆盖原始敏感信息。

在这些情况下,我所做的是将我的代码模块化,以便将这些信息隔离在一个文件中,然后我将带有文件名的一行添加到 .gitignore 文件中。

.gitignore 文件是一组模式,每行一个,文件名将被 git 在跟踪存储库中的更改时忽略。

例如,如果我正在用 php 编写 Web 系统,我会创建一个文件,该文件仅存储有关连接到数据库的凭据信息(框架也这样做,所以你可以猜到这是一个很好的做法.. .)。因此,我使用测试服务器凭据(我的合作者应该知道)或使用一些虚拟凭据编写此文件一次,将其提交并将其推送到我的远程,然后将文件名添加到我的 .gitignore

另一方面,您有命令git add -p,它可以交互地让您跳过行,但这会导致文件中没有提到的远程 repo 中的行,您每次都必须手动跳过行添加文件...

git 的一个很好的参考是Progit。如果您从 git 开始,强烈推荐...另外,Github's help center 是一个非常好的地方。

我希望它会有所帮助!祝你好运!!!

【讨论】:

  • 除此之外,我们过去常做的另一件事是拥有该文件的一个具有正确结构的版本,但没有任何敏感数据,保存为“.template”文件,旁边是真实文件应该。然后当你有一个新的团队成员,或者你的 repo 并且必须重置它或其他东西时,你可以复制文件并填写空白。您也可以对包含路径的项目文件执行此操作...
  • @MattJenko:我从来没有这样做过!这是个好主意!谢谢! =)
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 2013-10-09
  • 2016-06-06
  • 2017-03-08
  • 2011-01-29
  • 2021-10-21
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多