2017-06-16 307 views
0

主分支下面有文件夹结构:git的子文件夹到分支保存文件夹链接

  • 常见
    • A.TXT
  • 模块
    • ABC
      • 的abc.txt
    • DEF
      • def.txt

现在我想创建一个主新分行与子目录到像下面新枝:

  1. 普通科应该有共同的文件夹& a.txt中的文件夹

    • 常见
      • 下A.TXT
  2. ABC分支应该有stucture像模块\ ABC \ ABC .txt

    • 模块
      • ABC
        • 的abc.txt
  3. DEF分支应具有结构等模块\ DEF \ def.txt
    • 模块
      • DEF
        • def.txt

改造成最通用之后,ABC & DEF分支机构要合并回主。

+0

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

回答

0

您可以根据master创建3个不同的分支,然后从每个子目录中删除两个子目录,以便您可以将3个分支与其中的每个子目录相关联。此外,您还可以保留该子目录的历史记录。

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

master再次合并ABCDEF不会放弃任何东西,但可能会导致冲突。因为master结构将具有Common,ABCDEF。新创建的ABC将不具有commonDEF,并且将导致从master中删除CommonDEF

但是,对于合并,您可以使用。

git checkout master 
git merge subdirectory1 
+0

我想保留历史并将其合并回主 – Chand

+0

如果其他子文件夹被删除并且只将subdirectory1文件夹压入子目录1分支,这个历史记录也会被合并到主分支中吗? – Chand

+0

是的,那就是来自子目录1的SHA也会在主人的历史中。 –