如何防止本地文件与远程仓库同步?

时间:2015-11-10 06:31:16

标签: git

我有一个与身份验证相关的常量(例如客户端ID,客户端密码等)的文件,如下所示:

public class AuthConstants {
    public static final String CLIENT_SECRET = "Client secret here";
    ...
}

现在,我已使用占位符字符串提交并推送此文件,因此不会与其他人共享客户端机密。当我用实际ID,密码等替换占位符字符串时,我该如何保持这种方式?

重申一下,我想要

  • 公共存储库包含此文件的占位符版本

  • 本地存储包含此文件的实际版本

  • 以防止意外泄露实际版本到公共仓库

2 个答案:

答案 0 :(得分:2)

使用--assume-unchanged找到了解决方法:

git update-index --assume-unchanged <filehere>

答案 1 :(得分:0)

简短的回答:您根本不应将此文件置于版本控制之下。

使用.gitignore(有时候更好.git/info/exclude),使用git filter-branch从以前的提交中删除所有文件。

“占位符”的问题在于git,一旦“获得”某个给定文件,就会始终检查其内容(因此会更改).gitignore / .git/info/exclude。因此,您总是有机会无意中提交秘密内容。

如果占位符是绝对必要的(事实上,我会避免它),那么你可以创建一个预提交钩子,如果你意外地为提交暂存了文件,它会破坏提交过程。