如何在git repo中保留默认的未跟踪文件,同时维护本地副本?

如何在git repo中保留默认的未跟踪文件,同时维护本地副本?,git,Git,我已经找到了很多关于这个的话题,但是没有一个能解决我想要解决的具体问题 我在repo的根目录中有一个名为local.properties的配置文件。每个使用repo的开发人员在此配置文件中将具有不同的值。我希望在repo中有一个默认文件,这样,如果开发人员克隆了repo(或者拉取并且没有该文件,如果可能的话),它将被添加,但我不想在本地跟踪更改(即,当他们对文件进行更改时,git不应该将其作为修改后的文件进行跟踪)。我不希望开发人员必须执行任何额外的git命令才能使其正常工作(例如,git up

我已经找到了很多关于这个的话题,但是没有一个能解决我想要解决的具体问题

我在repo的根目录中有一个名为local.properties的配置文件。每个使用repo的开发人员在此配置文件中将具有不同的值。我希望在repo中有一个默认文件,这样,如果开发人员克隆了repo(或者拉取并且没有该文件,如果可能的话),它将被添加,但我不想在本地跟踪更改(即,当他们对文件进行更改时,git不应该将其作为修改后的文件进行跟踪)。我不希望开发人员必须执行任何额外的git命令才能使其正常工作(例如,
git update index——跳过worktree local.properties
),理想情况下,我希望这种情况保持不变,即使repo是分叉的

根据评论,我试着

  • 向上游推送模板文件,调用
    git rm--cached local.properties
    ,提交,将文件添加到
    .gitignore
    ,然后提交并推送,但这会导致删除上游文件
  • 将文件添加到
    .gitignore
    ,创建模板文件,使用
    git add-f local.properties
    强制添加它,提交并推送它,但仍在跟踪更改(使用
    git rm--cached local.properties
    使我的位置与以前相同)

至少还有一些其他的变体,它们是以不同的顺序和推送等方式进行的。我无法让文件实际保留在存储库中,不受跟踪,本地更改不会触发临时区域中的修改。这可能吗?

以不同的名称(例如,
local.properties.template
)提交并跟踪模板,并让开发人员在首次克隆repo时将其复制到实际名称。您甚至可以在repo中包含一个安装脚本来为他们进行复制。

以不同的名称(例如,
local.properties.template
)提交并跟踪模板,并让您的开发人员在首次克隆repo时将其复制到实际名称。@spectras。。。这其实不是个糟糕的主意。简单,但有效,不知道我以前怎么没有想到。我仍然很好奇,如果这是git提供的一项功能,那么模板化本地配置似乎是一个非常标准的用例。@Eaterofromage git没有任何内置的功能来在获取repo时复制文件。出于安全原因,它也不支持在获取repo后自动从repo运行脚本。@RoryO'Kane抱歉,我不清楚,我的意思是我想知道我在最初的帖子中描述的功能是否可用。