我有一个与身份验证相关的常量(例如客户端ID,客户端密码等)的文件,如下所示:
public class AuthConstants {
public static final String CLIENT_SECRET = "Client secret here";
...
}
现在,我已使用占位符字符串提交并推送此文件,因此不会与其他人共享客户端机密。当我用实际ID,密码等替换占位符字符串时,我该如何保持这种方式?
重申一下,我想要
公共存储库包含此文件的占位符版本
本地存储包含此文件的实际版本
以防止意外泄露实际版本到公共仓库
答案 0 :(得分:2)
使用--assume-unchanged
找到了解决方法:
git update-index --assume-unchanged <filehere>
答案 1 :(得分:0)
简短的回答:您根本不应将此文件置于版本控制之下。
使用.gitignore
(有时候更好.git/info/exclude
),和使用git filter-branch
从以前的提交中删除所有文件。
“占位符”的问题在于git,一旦“获得”某个给定文件,就会始终检查其内容(因此会更改).gitignore
/ .git/info/exclude
。因此,您总是有机会无意中提交秘密内容。
如果占位符是绝对必要的(事实上,我会避免它),那么你可以创建一个预提交钩子,如果你意外地为提交暂存了文件,它会破坏提交过程。