如何git-将两个不同的分支并排合并为一个分支?
How to git-merge two diverged branches side-by-side into one branch?
我有两个 git 分支,它们从一个共同的提交中分离出来,比如分支 A
和分支 B
:
-- a -- a' -- a'' (branch A)
/
-- o -- b -- b' -- b'' (branch B)
提交 a''
和 b''
都包含许多类似的文件,但现在用于不同的应用程序。我想将两个文件结构都保留在 a''
和 b''
.
中
现在,我想通过将 B
的内容添加到 A
的子目录中来合并两者。
示例情况是提交 o
中的 script.py
,其中包含 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
任一文件。
我想你想要的是git subtree
。特别是,此命令将完全按照您的描述执行。
git subtree --prefix=B B
假设您 运行 在分支 A
中执行此命令,它将创建一个子目录 B
,整个代码库都存在于分支 B
中。历史将被保留并添加前缀,图形将如下所示(m
用于合并提交)。
-- o -- a -- a' -- a'' -- m (branch A)
\ /
- b -- b' -- b'' - (branch B)
我有两个 git 分支,它们从一个共同的提交中分离出来,比如分支 A
和分支 B
:
-- a -- a' -- a'' (branch A)
/
-- o -- b -- b' -- b'' (branch B)
提交 a''
和 b''
都包含许多类似的文件,但现在用于不同的应用程序。我想将两个文件结构都保留在 a''
和 b''
.
现在,我想通过将 B
的内容添加到 A
的子目录中来合并两者。
示例情况是提交 o
中的 script.py
,其中包含 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
任一文件。
我想你想要的是git subtree
。特别是,此命令将完全按照您的描述执行。
git subtree --prefix=B B
假设您 运行 在分支 A
中执行此命令,它将创建一个子目录 B
,整个代码库都存在于分支 B
中。历史将被保留并添加前缀,图形将如下所示(m
用于合并提交)。
-- o -- a -- a' -- a'' -- m (branch A)
\ /
- b -- b' -- b'' - (branch B)