Git - 具有不同文件系统的多个分支

Git - Multiple branches with different file systems

如何正确组织多个分支,每个分支都有不同的文件系统?

情况是这样的-


我有两个分支:


事情变得有问题的地方是 develop brach 有,例如,文件夹 "storage" 被 .gitignore 文件忽略。其他分支没有这个文件夹(这就是为什么它也不在它的 .gitignore 文件中)。当我从 develop 结帐到 master brach 时,这个 "storage" 文件夹突然出现在根本不应该出现的其他分支中。

如何指定 files/folder 不得发送到服务器的每个项目,同时 files/folder 必须坚持每个分支而不在每次结帐时都经过分支。

我设法通过将这个文件夹添加到项目中的 .gitignore 文件来解决这个问题,这个文件夹甚至不应该存在(这就是我看不到我有任何应该提交的未更改文件的方式)但是我我猜这不是最好的解决方案,因为为什么我要排除一些本不应该存在的东西?

当我使用 PHPStorm 时,它变得更加复杂 IDE。 PHPStorm 在每个项目(在本例中为每个分支)中创建“.idea”文件夹,其中包含特定项目的所有配置和历史文件。显然,我不想将此文件夹发送到远程存储库(因为每个开发人员的每个项目都有自己的 .idea 文件夹),这就是为什么我将它排除在 .gitignore 文件中(我对两个分支都这样做,因为每个分支都有它自己的“.idea”文件夹)。当我结账到另一个分支时,这个文件夹会移动到那个分支,这是不应该发生的,因为这个 .idea 文件夹会破坏其他分支的 .idea 文件夹。所有配置都搞砸了。

为什么两个不同的项目文件系统是两个分支而不是两个项目? - 因为是同一个项目。只是全新的版本,它提供相同的视觉设计、功能并添加了许多额外的功能。将其称为其他项目是没有意义的。版本不同但项目相同

如果您使用 .gitignore 忽略文件/文件夹,它们将被 Git 忽略,句号。它们没有被跟踪,也没有被破坏,它们只是被忽略了。它们不会被添加、修改或删除,而是被完全忽略。它们未分配给任何分支,因为它们被忽略了。

我认为在你的情况下,最好为不同的分支设置多个工作树。工作树是签出实际文件供您处理的目录。使用 git worktree,您可以将多个工作树添加到一个存储库,从而可以将不同的分支检出到不同的工作目录。

这样您就可以拥有分支 a 的文件夹 a,您忽略了分支 a.idea 和分支 b 的文件夹 a =15=] 忽略分支 b.

.idea

实际上 .idea 中的大多数文件(例如不是 workspace.xml,但我认为所有其他文件)都不是特定于开发人员的,而是特定于项目的。因此,除了 workspace.xml 之外的所有内容都意味着能够签入版本控制,因此如果您切换到不同的分支,您可以随时获得该分支的正确 IDE 元数据,并且只需/.idea/workspace.xml 添加到 .gitignore,因为 这个 文件包含开发人员特定的东西,例如 non-shared 运行 配置、打开的文件、工具 window 布局,window 个位置,等等。所以这可能是您可以考虑的另一种解决方案。