45541


aaaとbbbという2つのリポジトリがあり，これらを統合して1つの新しいリポジトリとして下記のように管理したいと考えています．

[code]

    new-repo
    ├.git
    ├aaa
    └bbb
    
[/code]

aaaとbbbの歴史も残しつつ，new-repoとして新しく統合したリポジトリを作る方法として，どういう方法があるでしょうか？  
歴史を残すというのは，例えばnew-repoの直下で `git log` したときにaaaとbbbの歴史が同時に見れるようにしたい，ということです．


CC BY-SA 4.0
2018-07-11T11:16:43.747
45511
2018-07-12T03:16:47.793
29260
question
git
2つのrepositoryを新しいrepositoryのサブディレクトリにして管理したい


こんな感じでできると思います。

new-repo を作成:

[code]

    % mkdir new-repo
    % cd new-repo
    % git init
    % git commit -m 'Initial commit' --allow-empty
    
[/code]

aaa リポジトリをリモートリポジトリとして追加して、ブランチとして作成、ディレクトリに移動:

[code]

    % git remote add aaa <aaaリポジトリ>
    % git fetch aaa
    % git checkout -b aaa aaa/master
    % mkdir aaa
    % mv * aaa
    % git add .
    % git commit -m 'directory aaa'
    
[/code]

bbb リポジトリも同様にして、その後 aaa と bbb を master にマージ:

[code]

    % git checkout master
    % git merge --allow-unrelated-histories aaa
    % git merge --allow-unrelated-histories bbb
    
[/code]


CC BY-SA 4.0
2018-07-11T15:03:47.067
45520
2018-07-11T15:03:47.067
3249
45511
answer


git subtree を使うと他のリポジトリの歴史を保ったまま、サブディレクトリとしてマージできます。 新しくリポジトリを作成し、そこで aaa と
bbb をそれぞれ subtree add してやればできると思います。

git subtree add は、 <https://ja.stackoverflow.com/a/44470/754> などを参考するといいかもです。


CC BY-SA 4.0
2018-07-12T03:16:47.793
45541
2018-07-12T03:16:47.793
754
45511
answer