.git忽略现有文件而不从repo中删除它

.git忽略现有文件而不从repo中删除它,git,gitignore,Git,Gitignore,我可以告诉Git在提交文件夹时忽略某些跟踪文件中的更改吗?因此,例如,如果我决定忽略'private.conf',如果我执行'git commit',它就不会将其提交,但是如果我显式地告诉它'git commit private.conf',它将正常工作 请也考虑到这一点 我知道我可以明确地告诉git每次提交哪些文件(例如“git commit source1.c source2.c”),但这对我来说非常方便。相反,我会告诉git提交除“private.conf”之外的所有文件 一些stack

我可以告诉Git在提交文件夹时忽略某些跟踪文件中的更改吗?因此,例如,如果我决定忽略'private.conf',如果我执行'git commit',它就不会将其提交,但是如果我显式地告诉它'git commit private.conf',它将正常工作

请也考虑到这一点

  • 我知道我可以明确地告诉git每次提交哪些文件(例如“git commit source1.c source2.c”),但这对我来说非常方便。相反,我会告诉git提交除“private.conf”之外的所有文件
  • 一些stackoverflow主题建议将private.conf重命名为private.conf.template,然后运行'git rm--cached private.conf'。出于某些原因,这对我来说也不令人信服。请不要这样建议我。谢谢
  • 我知道我还可以执行“git更新索引——假定未更改的private.conf”,这将完全满足我的要求,但只适用于我的本地git存储库。我搜索的是一种为远程分支(以及从该远程分支克隆的所有git存储库)实现这一点的方法

  • 不,这是不可能的。跟踪文件是跟踪文件,不能忽略

    顺便说一句,使用
    ——假设unchanged
    是相当危险的,因为您告诉Git他的文件没有更改,Git会这样对待它,这意味着如果您切换分支、重基、合并或类似操作,Git可以随时放弃您的本地更改

    如果您希望不跟踪文件更改,则需要将其从存储库中删除,如使用
    .template
    文件或
    .sample
    的建议,如我通常命名的文件。

    在这种情况下,不应使用
    --假定未更改
    ,而应使用
    --跳过工作树
    。请看这里: