如何在git中轻松地“假定未更改”子目录?

如何在git中轻松地“假定未更改”子目录?,git,gitignore,Git,Gitignore,首先让我说.gitignore特性不是我要问的。我有一些特定的目录,必须在跨平台构建之前进行屏蔽。这些都是图书馆的东西,我每天都不会改变。这样做的方法是 git update-index --assume-unchanged 这确实很好,只是它不理解通配符,也不解释目录名以包含其下的所有内容。好吧,半罚款;见下文 如果我能给它取一个名字,那将是最方便的,因为它包含了我不会改变的图书馆资料。但是,这不起作用 它也不是实现这一点的真正功能。它可以防止未老化的更改中出现垃圾邮件,但也不能阻止git不

首先让我说.gitignore特性不是我要问的。我有一些特定的目录,必须在跨平台构建之前进行屏蔽。这些都是图书馆的东西,我每天都不会改变。这样做的方法是

git update-index --assume-unchanged
这确实很好,只是它不理解通配符,也不解释目录名以包含其下的所有内容。好吧,半罚款;见下文

如果我能给它取一个名字,那将是最方便的,因为它包含了我不会改变的图书馆资料。但是,这不起作用

它也不是实现这一点的真正功能。它可以防止未老化的更改中出现垃圾邮件,但也不能阻止git不时将所有内容恢复到它想要的方式


有什么方法可以做到这一点,或者有更好的方法来实现我想要的吗?

我不确定是否完全理解您想要什么,但我认为您可能需要查看gitattributes

在.gittributes中,可以定义与过滤器关联的路径,然后在.git/config中,可以配置clean和smudge命令:

通过这种方式,可以为一组文件指定特殊行为

我使用它在我的点文件中有一个集中的.gitconfig,并根据我所在的计算机使用clean/smudge更改电子邮件和一些参数


我认为你可以欺骗git,使其不以同样的方式修改整个文件。

澄清:我希望git完全忽略,即不更新,不查看添加或更改的内容,就好像它们从未出现过一样。让我根据我当地的需要修改它们,而不是抱怨或让我重做东西。这就是gitignore的作用,所以我真的不明白你为什么不想使用它?既然你问了,我不记得为什么它不能正常工作。这是我尝试的第一件事。