git:忽略源文件中的文件

git:忽略源文件中的文件,git,git-svn,gitignore,Git,Git Svn,Gitignore,有没有办法告诉git忽略一个存储在其源文件中的文件?由于所讨论的文件位于上游存储库中,因此仅将它们添加到.gitignore或.git/info/exclude中是行不通的 背景: 我的上游存储库中有一些生成的文件。每次我进行本地重建时,这些生成的文件都会发生更改,并且与提交的版本不同。生成的文件在存储库中,因为许多用户没有生成这些文件的软件(我也没有能力更改)。这些生成的文件从来不是手工生成的,我也不想将它们提交到我的git存储库。我有一个单独的机制将它们推送到主存储库(我无法控制这个单独的机

有没有办法告诉git忽略一个存储在其源文件中的文件?由于所讨论的文件位于上游存储库中,因此仅将它们添加到.gitignore或.git/info/exclude中是行不通的

背景

我的上游存储库中有一些生成的文件。每次我进行本地重建时,这些生成的文件都会发生更改,并且与提交的版本不同。生成的文件在存储库中,因为许多用户没有生成这些文件的软件(我也没有能力更改)。这些生成的文件从来不是手工生成的,我也不想将它们提交到我的git存储库。我有一个单独的机制将它们推送到主存储库(我无法控制这个单独的机制)

我正在使用一个私有git存储库对上游subversion存储库进行编辑。为此,我有一个git存储库,用于从subversion提取提交。通过cronjob定期同步git存储库。然后我有了私有的git存储库,它们是上游git存储库的克隆。我希望git不要在生成的文件上打扰我。我对这两个结果中的任何一个都很满意:我的本地git存储库不再跟踪文件(但应该由与svn同步的存储库跟踪),或者git将以静默方式更新我生成的文件,但它永远不会提交我的更改,并且这些文件永远不会显示在“git状态”的“已更改但未更新:”部分.

git更新索引——假设unchanged
可能是您的解决方案。有关更多信息,请查看


  • --假定未更改

  • ——无假设不变

指定这些标志后,不会更新为路径记录的对象名称。相反,这些选项设置并取消设置路径的“假定未更改”位。当“假定未更改”位处于启用状态时,git将停止检查工作树文件是否存在可能的修改,因此您需要手动取消设置该位,以便在更改工作树文件时通知git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大型项目时,这有时很有用

此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件所做的操作)。您应该记住,显式的git add操作仍然会导致文件从工作树中刷新。如果Git需要在索引中修改此文件,例如在提交中合并时,Git将失败(正常);因此,如果假定未跟踪的文件在上游更改,则需要手动处理这种情况


你真的可以在特定路径上使用它吗?我在我的项目上尝试过它,但无法让它删除远程:git更新索引上的文件——不,假设MyProject.xcodeproj/project.xcworkspace/xcuserdata没有更改/