git - 有没有办法将 gitignore 忽略的文件仅上传到特定的仓库?
问题描述
我们正在 Rails 中建立一个项目,事实上我们有两个用于此目的的 git 存储库,一个是 bitbucket(我们是否跟踪项目),另一个是 Heroku(生产)。我们必须将凭证文件上传到 Heroku,以便应用程序可以正常工作,但出于安全问题,我们不希望将该文件上传到 Bitbucket,所以我们的问题是:我们可以在 gitignore 文件中设置某种选项来上传凭证吗只向 Heroku 提交文件而不向 bitbucket 提交文件?提前致谢。
我们尝试通过 transfer.sh 和 gpg 上传文件,但我们宁愿不使用它,因为该文件在安全性方面非常脆弱。使用 heroku bash 创建文件也是不可能的,因为 Heroku 会自动删除它。
解决方案
我们可以在 gitignore 文件中设置某种选项来将凭证文件上传到 Heroku 而不上传到 bitbucket 吗?
不,您可能可以做一些事情,尽管在存储库中存储凭据通常是错误的想法。
Git 与文件无关。Git 是关于提交的。提交包含文件,因此通过获取和使用提交,您可以获得这些文件,但 Git 的基本单元是提交。
同时,.gitignore
是关于文件的——特别是在你的工作树中不会出现在未来提交中的文件。人们在这里遇到了一个绊脚石,因为您在 Git 称为index的东西中构建了新的提交。但是,最后,如果忽略条目有效,那是因为它阻止了文件进入下一次提交。 这里的机制——文件——是完全不相关的。.gitignore
如果您阻止文件进入下一次提交,该提交最终会进入 Bitbucket,那么,如果同一个提交也进入 Heroku,那么该提交也不会包含该文件。
同样,如果您将文件放入最终进入 Heroku 系统的提交中,那么,如果并且当相同的提交也进入 Bitbucket 时,该提交将继续拥有该文件。
这使情况变得清晰:如果提交有文件,则拥有该提交的人拥有该文件。 向 Heroku 发送您从未发送到 Bitbucket 的提交是可能的,但是由于 Git 通常是围绕着一种哲学设计的,即它倾向于将每个提交发送给每个人,因此请认真考虑您打算如何确保安全数据永不泄漏,在你尝试这个之前。
如果您无论如何都坚持这样做,请注意,.gitignore
有时将文件放入特定提交中,有时将文件排除在特定提交之外,这可能是错误的机制。(这是因为只有当文件不在索引中.gitignore
时,条目才会生效,并且检查具有该文件的任何提交,将该文件放入索引中,以便下一次提交也将具有该文件,而不管任何入口。).gitignore
推荐阅读
- angular - Angular httpClient 不执行网络请求
- mysql - 比较数字与字母数字
- python - 如何导入模块并将其绑定到 tkinter 窗口中的按钮
- c# - 如何使用这个 Nuget 包 Bot.Builder.Community.Middleware.Typing?
- python-3.x - 在熊猫中添加新列,python min 函数显示错误
- shell - 捕获子进程ID并将其保存到文件中以杀死它
- java - if/if - else/ else 带 lambda 表达式
- java - 如何比较具有不同名称引用但具有相同实际数据的两个列表
- android - 我在我的 Android 回收站视图中没有看到 mp3 文件名,而是看到了他们的链接
- c++ - 尝试对大型已排序容器进行排序时,快速排序生成退出代码 -1073741571 (0xC00000FD)