我有两个git分支,它们与常见提交分开,比如分支A
和分支B
:
-- a -- a' -- a'' (branch A)
/
-- o -- b -- b' -- b'' (branch B)
提交a''
和b''
都包含许多类似的文件,现在用于不同的应用程序。我想在a''
和b''
中保留两个文件结构。
现在,我想通过将B
的内容添加到A
到子目录来合并这两者。
包含script.py
的提交o
中的示例情况为print ('original')
。在分支A
中,文件在一系列提交中变为print ('some feature A')
;在分支B
中,文件在某些提交中也会更改为print ('another feature B')
。
我现在如何才能进入我拥有文件的分支
script.py (from A)
B/script.py (from B)
分别以print ('some feature A')
和print ('another feature B')
为内容?
注意:我希望保持A版script.py
和B版B/script.py
案例的增量历史记录能够git blame
文件。
答案 0 :(得分:1)
我认为你想要的是git subtree
。特别是,此命令将完全按照您的描述执行。
git subtree --prefix=B B
假设您在分支A
中运行此命令,它将创建一个子目录B
,其中整个代码库存在于分支B
中。历史记录将被保留并加上前缀,图形将如下所示(m
用于合并提交)。
-- o -- a -- a' -- a'' -- m (branch A)
\ /
- b -- b' -- b'' - (branch B)