Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 忽略跟踪的文件更改_Git_Gitignore - Fatal编程技术网

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不是一个足够好的解决方案,

我有一个git跟踪的文件
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在此期间并没有发生神奇的变化。