有没有办法告诉git忽略存储在其原点的文件?由于有问题的文件位于上游存储库中,因此只需将它们添加到.gitignore或.git / info / exclude即可。
背景:
我的上游存储库中包含一些生成的文件。每次进行本地重建时,这些生成的文件都会更改,并且与提交的版本不同。生成的文件位于存储库中,因为许多用户没有生成它们的软件(我没有权力更改它)。这些生成的文件永远不会手工生成,我从不想将它们提交到我的git存储库。我有一个单独的机制将它们推送到主存储库(我无法控制这个单独的机制)。
我正在使用私有git存储库来编辑上游的subversion存储库。为此,我有一个git存储库,只是为了从subversion中提取提交。该git存储库通过cronjob定期同步。然后我有私有git存储库,它们是上游git存储库的克隆。我希望git不会对生成的文件产生误解。我对这两个结果中的任何一个感到满意:我的本地git存储库不再跟踪文件(但是它们应该由与svn同步的文件跟踪),或者git将以静默方式更新我生成的文件,但它永远不会提交我的更改和文件永远不会显示在“git status”的“已更改但未更新:”部分。
答案 0 :(得分:2)
git update-index --assume-unchanged
可能是您的解决方案。查看man page了解详情。
--assume-unchanged
--no-assume-unchanged
指定这些标志时,不会更新为路径记录的对象名称。相反,这些选项设置和取消设置路径的“假定未更改”位。当“假定未更改”位打开时,git停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以在更改工作树文件时告诉git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。
此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件的更改)。您应该记住,显式的git add操作仍然会导致从工作树刷新文件。如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。