Git 如何防止本地文件与远程repo同步?

Git 如何防止本地文件与远程repo同步?,git,Git,我有一个文件,其中包含与身份验证相关的常量(例如,客户端ID、客户端机密等),如下所示: public class AuthConstants { public static final String CLIENT_SECRET = "Client secret here"; ... } 现在,我已经使用占位符字符串提交并推送了这个文件,因此客户机机密不会与其他人共享。当我用实际的ID、secret等替换占位符字符串时,如何保持这种状态 重申一下,我想 公共repo包含此文件

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

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就我而言,现在还可以。