如何正确组织多个分支,每个分支具有不同的文件系统?
情况如下 -
我有两个分支:
如何指定每个项目哪些文件/文件夹不得发送到服务器,同时哪些文件/文件夹必须与每个分支保持一致,而不必在每次结帐时通过分支。
我设法通过将此文件夹添加到项目中的.gitignore文件来解决此问题,该文件夹甚至不应该存在(这就是我没有看到我有任何应该提交的未更改的文件)但是我想它不是最好的解决方案,因为我为什么要排除那些甚至不应该存在的东西?
当我使用PHPStorm IDE时,它变得更加复杂。 PHPStorm在每个项目(在本例中为每个分支)创建“.idea”文件夹,其中包含特定项目的所有配置和历史文件。显然,我不想将此文件夹发送到远程存储库(因为每个开发人员每个项目都有自己的.idea文件夹),这就是我在.gitignore文件中排除它的原因(我为两个分支做了这个,因为每个分支都有它自己的“.idea”文件夹)。当我结帐到另一个分支时,这个文件夹会移动到那个不应该发生的分支,因为这个.idea文件夹会破坏其他分支的.idea文件夹。所有的配置都搞砸了。
为什么两个不同的项目文件系统作为两个分支而不是两个项目? - 因为它是同一个项目。只是全新的版本,它提供相同的视觉设计,功能并增加了许多额外的功能。将其称为其他项目是没有意义的。它是不同的版本,但是同一个项目。
答案 0 :(得分:2)
如果忽略.gitignore的文件/文件夹,Git,fullstop会忽略它们。它们没有被跟踪,也没有被破坏,它们被忽略了。它们不会被添加,修改或删除,但会被完全忽略。它们未被分配给任何分支,因为它们被忽略。
我认为在你的情况下,为不同的分支机构提供多个工作项是最好的。工作树是检出实际文件的目录,供您使用。使用git worktree
,您可以将多个工作树添加到一个存储库,从而可以将不同的分支签出到不同的工作目录。
通过这种方式,您可以为分支a
设置文件夹a
,您已忽略分支.idea
的{{1}}和分支{{1}的文件夹a
您已忽略分支b
的{{1}}。
实际上b
中的大多数文件(例如,不是.idea
,但我认为所有其他文件)都不是开发人员特定的,而是项目特定的。因此除了b
之外的所有内容都意味着能够签入版本控制,因此如果您切换到不同的分支,您可以使用正确的IDE元数据来获得此分支,并且只有{{1}添加到.idea
作为此文件包含开发人员特定的内容,如非共享运行配置,打开的文件,工具窗口布局,窗口位置等。所以这可能是您需要考虑的另一种解决方案。