使用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/