忽略git中的服务器配置文件

忽略git中的服务器配置文件,git,github,version-control,Git,Github,Version Control,我的web项目中有一个文件,用于设置站点数据库连接。显然,对于站点的临时分支和活动分支,这有不同的设置,我需要它在我的机器上包含我的本地开发人员设置。 该文件需要存在于回购协议中,但既然存在,就不需要对其进行跟踪 我遵循了这个问题(和其他问题)中的建议: 这使得git不再告诉我给定分支上的更改,但是如果我尝试更改分支,比如从我当前的bug Fixed分支更改为staging,或者如果我尝试将staging合并到当前分支,git警告我本地更改将被覆盖,并且我被锁定在该分支中 到目前为止,我找到的唯

我的web项目中有一个文件,用于设置站点数据库连接。显然,对于站点的临时分支和活动分支,这有不同的设置,我需要它在我的机器上包含我的本地开发人员设置。 该文件需要存在于回购协议中,但既然存在,就不需要对其进行跟踪

我遵循了这个问题(和其他问题)中的建议: 这使得git不再告诉我给定分支上的更改,但是如果我尝试更改分支,比如从我当前的bug Fixed分支更改为staging,或者如果我尝试将staging合并到当前分支,git警告我本地更改将被覆盖,并且我被锁定在该分支中

到目前为止,我找到的唯一“解决方案”是取消忽略该文件,并提交差异,或者修改本地文件,使其与服务器分支匹配


让所有分支忽略配置文件的最佳方法是什么?

您可以使用
假定未更改
标志

--[否-]假设不变 指定此标志后,不会更新为路径记录的对象名称

相反,此选项设置/取消设置路径的“假定未更改”位

当“假定未更改”位打开时,用户承诺不更改文件,并允许Git假定工作树文件与索引中记录的内容匹配。如果要更改工作树文件,需要取消设置位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大型项目时,这有时很有用

如果Git需要在索引中修改此文件,例如在提交中合并时,Git将失败(正常);因此,如果假定未跟踪的文件在上游更改,则需要手动处理这种情况

请尝试以下方法:

git更新索引--跳过工作树--

我在“

中详细说明了两个
更新索引
选项(
--假定未更改
--跳过工作树
)之间的区别试图忽略git中跟踪文件的仅本地更改只会导致问题

像--ASSUBE UNCHANDER和--skip WORKSTREE这样的选项只有在执行git状态时,当git从文件系统读取更改时才有影响。当您执行诸如git签出之类的操作时,git不会忽略对这些文件的更改,从而导致您遇到错误


根据我(和其他人)的经验,最好不要跟踪实际的配置文件。相反,最好使用不同的名称跟踪模板。这避免了在复制/提取文件时覆盖实际配置文件或必须排除/忽略文件的许多问题。

是的,这是中的建议,但我仍然得到错误
当我尝试签出或合并不同分支时,您对以下文件的本地更改将被覆盖。我不希望本地设置保存到git中,但我也不希望每次合并或切换分支时都必须将文件还原到repo的版本。当然有一种方法可以告诉git忽略所有分支中的给定文件吗?
——假设unchanged
不适用于此。这意味着当您有一个大的工作树时,它是对git状态的优化,在这个树中您承诺git不会更改某些路径,这样git就不必在那里寻找更改。当您进行更改时,git会开始抱怨诸如git签出、git合并等操作。我错过了问题的配置文件部分。你建议使用git污点内容过滤器吗?(如我在或中所述)我想我在其他地方见过这种技术。我希望找到一个涉及实际文件的解决方案,但这将是一个令人满意的折衷方案。我想我需要将真正的配置文件添加到.gitignore中,这样它就不会经常被覆盖?@StuartKemp正确吗
git update-index --skip-worktree -- <local-only_file>