【问题标题】:Git branch with only a part of overall code仅包含整体代码一部分的 Git 分支
【发布时间】:2018-02-07 07:46:54
【问题描述】:

我目前正在使用 - 我想 - 一个标准的工作流程:

  • 主分支:稳定代码
  • 开发分支:开发功能
  • XXX 分支:new_features 分支

使用以下工作流程:

*--*--*--*--*--*--*--*--*--*--*- (master)
          \
            *--*--*--*--*--*--*- (development)
               \
                - *--*--*--*--*- (new feature X) 

我的主分支包含我项目所有模块的文档、示例和教程

Project TOTO
  |
  |
  --- Module pepito 
  |     |
  |     ----Submodule alpha (src, docs, tutorials, examples)
  |     |
  |     ----Submodule beta (src, docs, tutorials, examples)
  --- Module pepita
  |     |
  |     ----Submodule gamma (src, docs, tutorials, examples)
  |     |
  |     ---- Submodule delta (src, docs, tutorials, examples)
  ---- Module pepiti (src, docs, tutorials, examples)

这个工作流程很好,但我想要一个没有像这样的文档、教程和示例的新分支“light”:

Project TOTO
  |
  |
  --- Module pepito 
  |     |
  |     ----Submodule alpha (src only)
  |     |
  |     ----Submodule beta (src only)
  --- Module pepita
  |     |
  |     ----Submodule gamma (src only)
  |     |
  |     ---- Submodule delta (src only)
  ---- Module pepiti (src only)

因为我所有的项目都有相同的结构:

Main directory
 - src
 - docs
 - examples
 - tutorials

当我从 master 合并到新的“light”分支时,我想定义一种排除模式“docs”、“examples”和“tutorials”的“gitignore”。有可能吗?

我发现了一些这样的资源: ignore a directory while merging 或者 setupd a git driver to ignore a folder

但它们不适合我的工作流程(第 1 个链接)或似乎有点矫枉过正(第 2 个链接)

有没有一种简单的方法来获得请求的行为,或者我应该改变我的工作流程吗? 谢谢

【问题讨论】:

    标签: git branch


    【解决方案1】:

    您始终可以从 master 说“x”创建一个分支,然后您可以删除不需要的内容并提交。

    为了让您的工作更轻松,您可能会想到特定于分支的 git-ignore,但该功能目前在 git 中不可用

    最好的办法是创建一个分支并删除不需要的内容并提交。

    【讨论】:

    • 感谢您的回答。特定于分支的 git 是否忽略了正在开发的功能?
    • 请注意,如果您合并您删除的内容,也会从母版中删除。
    • @evolutionxbox 是的,但工作流程将是 development -merge> master -merge> "light"。唯一的问题是我必须手动删除每个合并的所有文档/教程/示例
    • 否,但是需要此功能。它可能会在未来发挥作用
    【解决方案2】:

    我认为一个好的解决方案是将文档、示例等移动到另一个存储库,并仅将其作为子模块链接到需要它的那些分支中。

    【讨论】:

    • 感谢您的回答。我还在学习 git,所以我找到了关于 submodules 的资源。您的解决方案很好,但它似乎破坏了我的项目结构,我必须将所有文档/示例/教程放在同一个文件夹中,然后将其链接到主分支。我错过了什么吗?
    • 请注意,我的解决方案在新存储库中实现起来非常简单。如果您想修改已经拥有的存储库,解决方案会稍微复杂一些。首先,您需要创建一个新的存储库(或多个),其中包含示例、文档以及您不想包含在每个分支中的所有其他内容。假设它的地址是 git@github.com:torvalds/linux.git 然后你需要将它作为一个子模块添加到你的分支中。结帐“pepito”,然后只需git sibmodule add git@github.com:torvalds/linux.git eventually/the/path/where/you/want/it
    • “移动...到另一个分支”是指“移动到单独的(子)存储库”吗?
    • @roalz 是的,另一个存储库或子存储库,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-11-07
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2011-07-06
    • 2021-11-06
    相关资源
    最近更新 更多