【问题标题】:git subfolder into branch keeping folder linksgit子文件夹到分支保存文件夹链接
【发布时间】:2017-11-19 04:30:14
【问题描述】:

主分支具有以下文件夹结构:

  • 普通
    • a.txt
  • 模块
    • ABC
      • abc.txt
    • 防御
      • def.txt

现在我想创建一个从 master 到子目录的新分支,如下所示:

  1. Common Branch 下应该有 Common 文件夹 & a.txt

    • 普通
      • a.txt
  2. ABC 分支应该有类似 Module\ABC\abc.txt 的结构

    • 模块
      • ABC
        • abc.txt
  3. DEF 分支应具有类似 Module\DEF\def.txt 的结构
    • 模块
      • 防御
        • def.txt

修改为Common后,ABC&DEF分支要合并回master。

【问题讨论】:

  • 我可以使用 git filter-branch --subdirectory-filter 吗?

标签: git subdirectory


【解决方案1】:

您可以基于master 创建3 个不同的分支,然后从每个分支中删除两个子目录,这样您就可以拥有3 个独立的分支,每个子目录都在其中。此外,您还可以维护该子目录的历史记录。

git branch --no-track "$subdirectory1" master
git checkout "$subdirectory1"
git push --set-upstream --progress origin

master 中再次合并ABCDEF 不会给出任何结果,但可能会导致冲突。因为master 结构将具有CommonABCDEF。新创建的ABC 将没有commonDEF,将导致从master 中删除CommonDEF

但是你可以使用合并。

git checkout master
git merge subdirectory1

【讨论】:

  • 我想保留历史并合并回master
  • 如果其他子文件夹被删除并仅将 subdirectory1 文件夹推送到 subdirectory1 分支中,此历史记录也会合并到 master 分支中吗?
  • 是的,来自 subdirectory1 的 SHA 也将出现在 master 的历史记录中。
猜你喜欢
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2011-01-05
  • 2014-01-12
相关资源
最近更新 更多