git - 阻止 Git 推送 secret (但被跟踪)文件

标签 git push git-submodules git-remote

使用git我跟踪一个名为top-secret.txt的绝密文件。 如何确保该文件在推送时永远不会离开我的本地系统 到远程(但仍受本地版本控制)?

示例

  • 假设我有一个提交,它更改了名为 top-secret.txt 的 secret 文件 另一个名为 not-secret.txt 的文件.
  • 推送此提交时,将对 not-secret.txt 所做的更改传输到远程。
  • top-secret.txt 所做的更改将保留在我的本地系统上。

额外信息: 推送是由持续集成系统执行的,因此我有机会在推送到远程之前在本地执行脚本。

我需要为此设置一个 git 子模块还是有更简单的解决方案?

最佳答案

你不能。 Git 的底层对象模型(一切都是四种类型之一的对象:提交、树、带注释的标签或“blob”,即文件)禁止区分“我可以看到但你看不到的文件”和"file"每个人都可以看到”。拥有存储库副本的任何人都可以看到存储库中的每个对象。

因此只有两种方法可以使文件保密:

  • 首先不要将其包含在存储库中,或者
  • 对其进行加密。

子模块方法相当于执行第一个操作,同时还提示缺少某些内容(与“存在但已加密”不同)。

关于git - 阻止 Git 推送 secret (但被跟踪)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347588/

相关文章:

android - 我可以在我的应用程序中接收来自两个或多个 GCM SENDER_ID 的 GCM 消息吗?

javascript - Laravel Pusher 前端未接收数据

ios - Git 子模块 vs Git 子树 vs 依赖管理器 CocoaPods

linux - 依赖性问题 - 未配置

Git 的 "Bash.exe"与 "Git Bash.vbs"

ios - 在 iOS8.0.2 上未收到 Pushkit voip 推送通知

git - 在 git-svn 项目中使用 git 子模块

git - 未跟踪的 git 子模块

git - 无法在 Jenkins 中使用 Multiple-SCM-Plugin 获取多个 repos 的 git 提交

git - 在 bitbucket 中导入本地文件夹