Git 如何防止本地文件与远程repo同步?
我有一个文件,其中包含与身份验证相关的常量(例如,客户端ID、客户端机密等),如下所示:Git 如何防止本地文件与远程repo同步?,git,Git,我有一个文件,其中包含与身份验证相关的常量(例如,客户端ID、客户端机密等),如下所示: public class AuthConstants { public static final String CLIENT_SECRET = "Client secret here"; ... } 现在,我已经使用占位符字符串提交并推送了这个文件,因此客户机机密不会与其他人共享。当我用实际的ID、secret等替换占位符字符串时,如何保持这种状态 重申一下,我想 公共repo包含此文件
public class AuthConstants {
public static final String CLIENT_SECRET = "Client secret here";
...
}
现在,我已经使用占位符字符串提交并推送了这个文件,因此客户机机密不会与其他人共享。当我用实际的ID、secret等替换占位符字符串时,如何保持这种状态
重申一下,我想
- 公共repo包含此文件的占位符版本
- 包含此文件实际版本的本地回购协议
- 防止向公众披露实际版本的回购协议
- 简单的回答是:您根本不应该将此文件置于版本控制之下
使用
.gitignore
(或者更好的.git/info/exclude
),和从所有中删除文件,使用git筛选器分支
“占位符”的问题是,git一旦“获取”了给定的文件,就会始终检查其内容(并因此进行更改),尽管有.gitignore
/.git/info/exclude
。因此,您始终有机会意外提交机密内容
如果占位符是绝对必要的(事实上,我会避免它),那么您可以创建一个预提交钩子,如果您不小心为提交暂存了文件,它将中断提交过程。找到了使用
--假定未更改执行此操作的方法:
git update-index --assume-unchanged <filehere>
git更新索引--假定未更改
我想你可以用假设不改变或类似的东西做些什么?你可能有比我更好的解决方案!但是,即使使用--assession unchange
在分支之间切换时也会遇到一些问题。简而言之,git会中止切换,告知存在一些未提交的更改。使用--assession unchange的解决方案并不方便,因为它会阻止用户轻松更改分支,您必须强制将工作树重置为原始状态,实际上会丢失所做的更改,然后切换分支。@user3159253就我而言,现在还可以。