Git 如何在一个克隆中隐藏(而不是忽略)已删除的文件?

Git 如何在一个克隆中隐藏(而不是忽略)已删除的文件?,git,unity3d,github,Git,Unity3d,Github,场景:我有一个Unity(游戏引擎)项目,可以构建到Windows、Android和iOS。一些文件夹只与Windows相关,对于Android和iOS版本,它们应该不在项目范围内。Unity并没有提供一个很好的方法来实现这一点,所以我有三个项目的克隆(在不同的机器上),并删除了这些文件夹 这种方法的问题:有时,我会在其中一个克隆中进行更改,但大约有16K个“已更改”(实际已删除)文件,这使得在GitHub for Desktop中很难找到实际更改的文件(我也使用了TortoiseGit,但也有

场景:我有一个Unity(游戏引擎)项目,可以构建到Windows、Android和iOS。一些文件夹只与Windows相关,对于Android和iOS版本,它们应该不在项目范围内。Unity并没有提供一个很好的方法来实现这一点,所以我有三个项目的克隆(在不同的机器上),并删除了这些文件夹

这种方法的问题:有时,我会在其中一个克隆中进行更改,但大约有16K个“已更改”(实际已删除)文件,这使得在GitHub for Desktop中很难找到实际更改的文件(我也使用了TortoiseGit,但也有同样的问题)

使用.git忽略?否:起初我尝试使用.gitignore,但这是为了实际忽略文件而设计的,即不控制文件的版本。对我的用例没有帮助,因为我希望这些文件的版本得到控制,当然不会在存储库中被删除

使用分支:如果我在分支中提交了删除操作,可能会起作用,但这意味着我必须将主分支中的所有更改合并到一直删除文件夹的分支中,因此对于我所需要的内容来说,这似乎相当麻烦(除非我遗漏了什么)

使用.git\info\exclude:也许我只是做错了什么,但它也没有隐藏删除的文件。我假设这也是为了将文件从版本控制中排除(因此删除的文件仍然显示)。但我想要的是将文件保存在版本控制中,并将其隐藏在视图中

我已经看过了,这是我的建议。这似乎相当接近我所需要的,但仍然感觉像是用大锤敲开一个坚果


所以如何在一个克隆中隐藏(而不是忽略)已删除的文件?

另一种方法是Unity3d,它使用的是CMake

它允许您自动制定规则,以便在一个存储库中使用相同或不同的源文件生成不同的可执行文件,如下所示:

添加可执行文件(二进制名称1 source1 source2 source3…)
添加可执行文件(二进制名称2 source1 source2 source4…)
添加可执行文件(二进制名称3 source3 source4…)
…

因此,在编译Android和iOS版本时,您可以选择不使用Windows源文件

CMake的官方网站:


编辑:可能是针对Unity的Cmake集成?

在GIT领域内,您可以将一个核心(所有公共文件)项目作为子存储库嵌入到构建目标特定的repo中。这样,对核心的每一次推式更改都将作为分支的子模块更改被拉入

显然,这样做的方法是使用,另请参见

这是一个好主意,在检查所有内容之前设置好它,不要疯狂地尝试git命令来修复当你不知道自己在做什么时没有这样做的问题,特别是如果你正在使用GBs资产的游戏项目,就像我刚才做的那样(
git read tree--empty
不是我的好朋友)。GitHub桌面也开始向我抛出错误,直到我执行了
git重置
/
git签出
,这可能是我首先应该做的

现在,一切似乎都是应该的。。。我只是一路上有点害怕(可能是浪费了一两个小时,在紧迫的最后期限下,这真的很痛苦)


编辑:我发布了。

谢谢,但Unity有自己的构建引擎,可以处理项目中的所有资产,所以很遗憾,CMake对此没有帮助。我编辑这个问题是为了更清楚一点。我理解,很抱歉不能再帮你了!酷,谢谢!我刚刚发现了稀疏签出(见我自己的答案),这似乎是我所需要的——但了解核心项目/子模块很好。