每个分支.gitignore简单,忽略相对的文件夹,切换分支时不删除它们不是那么容易

问题描述

问题

我想为我的IIS服务器创建一个“ wwwroot”存储库,并由不同的分支机构跟踪不同的“站点”,特别是生产站点(wwwroot / prod),开发站点(wwwroot / dev)以及其他一些站点(wwwroot / other)。

我认为简单地让每个分支仅跟踪其各自的文件夹,而忽略其他子文件夹,将是微不足道的。此“有效”,除了,在分支之间进行切换删除 其他分支。

我尝试过使用简单的.gitignores来按名称忽略其他目录,而尝试过更复杂的.gitignores会忽略所有但各自的目录。

如果我决定合并分支,我不担心.gitignore文件合并冲突。

我想我可以使用SO上其他地方提出的解决方案,使用不同的排除项并更新分支更改上的符号链接,但是对于长期/替代我的人来说,这并不理想。当然我只是在使用.gitignore错误


示例

wwwroot/prod   (tracked by prod branch,ignores dev and other)
wwwroot/dev    (tracked by dev branch,ignores prod and other)
wwwroot/other  (tracked by other branch,ignores prod and dev)

但是例如,在设置了gitignores之后,更改为另一个分支会导致将另一个(以前已检出)分支从wwwroot工作目录中删除(因此无法再访问网页)

解决方法

如果您可以负担得起 not 跟踪wwwroot的内容(这意味着不需要在Git中跟踪,无需提交就可以跟踪文件夹或一系列文件夹,但是可以将其保留为私有),那么我将: / p>

  • 在存储库之外创建这些文件夹
  • 跟踪符号链接

那是

  • wwwroot -> /../prodprod是与回购本身位于同一父文件夹中的文件夹)
  • wwwroot -> /../devdev是与回购本身位于同一父文件夹中的文件夹)
  • wwwroot -> /../otherother是与回购本身位于同一父文件夹中的文件夹)

那样,您只跟踪wwwroot(根据分支而变化),并使用相对路径符号链接到正确的外部文件夹。