Git 忽略跟踪的文件更改
我有一个git跟踪的文件Git 忽略跟踪的文件更改,git,gitignore,Git,Gitignore,我有一个git跟踪的文件config.txt,它是在git clone上下载的,但我不希望任何人更改并提交它,也就是说,如果有人更改了该文件,我不希望他们的更改被跟踪,因此提交并意外推送 我仍然希望以后能够添加config.txt的潜在更改,但是可以以明确的方式(可以是git add-f config.txt或其他方式) 另外,执行此操作的额外步骤也是不可取的,因此git update index--跳过工作树或git update index--假定unchanged不是一个足够好的解决方案,
config.txt
,它是在git clone
上下载的,但我不希望任何人更改并提交它,也就是说,如果有人更改了该文件,我不希望他们的更改被跟踪,因此提交并意外推送
我仍然希望以后能够添加config.txt
的潜在更改,但是可以以明确的方式(可以是git add-f config.txt
或其他方式)
另外,执行此操作的额外步骤也是不可取的,因此git update index--跳过工作树
或git update index--假定unchanged
不是一个足够好的解决方案,因为它容易出现人为错误
是否可以在git中执行此操作?该问题的一个可能解决方案是在克隆存储库后“跳过”跟踪文件:
git update-index --skip-worktree <path-name>
git更新索引--跳过工作树
缺点是,这需要所有用户在克隆repo后执行额外的步骤,因此您可以在
自述文件中添加该步骤,您不能忽略对Git中跟踪文件的更改。委员会:
Git没有提供这样做的方法。原因是,如果Git需要覆盖此文件,例如在签出期间,它不知道对文件的更改是否宝贵,是否应该保留,或者它们是否无关,是否可以安全地销毁。因此,它必须采取安全路线,并始终保护它们
尝试使用git更新索引的某些特性是很有诱惑力的,即“假定未更改”和“跳过工作树”位,但这些功能不能正常工作,不应该以这种方式使用
如果您的目标是使用配置文件,那么最好添加一个示例或模板文件,然后让用户将其复制到适当的位置,或者让脚本创建适当的文件。然后,您应该忽略实际配置文件的位置,只检查示例或模板。我们有这样的配置文件。我们的方法是:不要意外地将该文件添加到任何提交中。此外,我还将我的文件版本保存在一个私有分支中,因此,如果它确实被拉取覆盖,我可以还原它。@matt这确实是我们目前使用的解决方案,但是,这个世界上有一些人,我们需要一个愚蠢的保护措施……嗯,@matt这是一个很好的解决方案,然而,我更喜欢不需要额外步骤,可以在存储库级别配置的东西,因为没有更好的答案。Git在此期间并没有发生神奇的变化。