【问题标题】:Git branches with different directory structure具有不同目录结构的 Git 分支
【发布时间】:2018-07-05 16:01:34
【问题描述】:

我有带有分支 master、test 和 development 的存储库 ABC。

主目录结构有:

  • 文件夹 1
  • 文件夹2
  • 文件夹 3
  • ...
  • .gitignore
  • README.md

test 分支结构类似:

  • test.folder1
  • test.folder2
  • test.folder3
  • onlytestfile.txt
  • ...
  • .gitignore
  • README.md

开发分支结构类似:

  • dev.folder1
  • dev.folder2
  • dev.folder3
  • onlydevfile.txt
  • ...
  • .gitignore
  • README.md

所有分支在文件夹中的内容完全相同。提交和更改首先进入开发阶段,然后合并到测试中,然后合并到主控中。问题是如何在文件夹名称结构不同的分支之间进行这些合并?

【问题讨论】:

    标签: git git-merge git-diff git-config


    【解决方案1】:

    问题是如何在文件夹名称结构不同的分支之间进行这些合并?

    您重命名目录以匹配、提交,然后合并。

    这不是一个可行的工作流程,也不是对分支的有效利用。

    由于分支已经将您的开发、测试和可能的生产版本分开,因此无需更改目录名称。在所有分支中命名相同的东西,问题就消失了。


    对于onlytestfile.txtonlydevfile.txt,您不能从合并中排除文件。您必须合并所有内容。所以你要么必须删除它并在合并之前提交,要么git merge --no-commit并自己手动删除文件(有人不可避免地会忘记这样做),或者想出一个更好的策略。我建议最后一个。

    我认为这是配置信息。有多种更好的策略可以为多个环境存储配置,I lay one out in this answer

    【讨论】:

    • 你在这里说的不是一个有效的观点。不同的应用程序有不同的文件结构。通常,我会按照您在回答中所说的去做,但这并不意味着该问题无效。
    • @Kal 是的,这个问题很有道理,它出现了很多,我给出了答案。当问题是XY problems时,我们也会识别;您问的是解决方案,而不是配置管理和版本控制的问题。对于您的问题,有更好的解决方案,它们更简单、更不容易出错,并且可以与 Git 一起使用,而不是与之对抗。通过询问专家,我们可以认识到这一点并提供更深入的答案。你得到两个答案的价格。 :)
    • @Kal 如果您的情况有其他情况不适用通常的解决方案,请将其添加到您的问题中,以便我们提供更适合的答案。
    • @Kal - Schwern 在这里所说的 一个有效点。正如您所说的“所有分支在文件夹中的内容完全相同”,那么跨分支更改这些文件夹的名称不是一个可行的解决方案 - 因为那时git 无法告诉您您的期望。如果您有需要工作副本使用不同文件名的部署需求,那么最好在源代码控制工具之外解决这个问题。分支之间的任何持久差异都会使跨分支合并成为一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多