普通に git を使っていれば、ルートコミットは1つしかない、つまり、任意のコミットの親をたどっていくとある単一のコミットに到達するわけですが、無関係なリポジトリからブランチをを push するとルートコミットが複数ある状態を作れます。

[umezawaa@umezawa-dev:pts/7 git-multi-root]$ mkdir a
[umezawaa@umezawa-dev:pts/7 git-multi-root]$ cd a
[umezawaa@umezawa-dev:pts/7 a]$ git init
Initialized empty Git repository in /home/umezawaa/git-multi-root/a/.git/
[umezawaa@umezawa-dev:pts/7 a]$ touch hoge.txt
[umezawaa@umezawa-dev:pts/7 a]$ git add hoge.txt
[umezawaa@umezawa-dev:pts/7 a]$ git commit -m hoge
[master (root-commit) 3e7d74a] hoge
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 hoge.txt
[umezawaa@umezawa-dev:pts/7 a]$ cd ../
[umezawaa@umezawa-dev:pts/7 git-multi-root]$ mkdir b
[umezawaa@umezawa-dev:pts/7 git-multi-root]$ cd b
[umezawaa@umezawa-dev:pts/7 b]$ git init
Initialized empty Git repository in /home/umezawaa/git-multi-root/b/.git/
[umezawaa@umezawa-dev:pts/7 b]$ touch fuga.txt
[umezawaa@umezawa-dev:pts/7 b]$ git add fuga.txt
[umezawaa@umezawa-dev:pts/7 b]$ git commit -m fuga
[master (root-commit) f196c53] fuga
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 fuga.txt
[umezawaa@umezawa-dev:pts/7 b]$ git remote add a ../a
[umezawaa@umezawa-dev:pts/7 b]$ git branch b-master
[umezawaa@umezawa-dev:pts/7 b]$ git push a b-master
Counting objects: 3, done.
Writing objects: 100% (3/3), 217 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To ../a
 * [new branch]      b-master -> b-master
[umezawaa@umezawa-dev:pts/7 b]$ cd ../a
[umezawaa@umezawa-dev:pts/7 a]$ git branch
  b-master
* master
[umezawaa@umezawa-dev:pts/7 a]$ git log --format=oneline
[umezawaa@umezawa-dev:pts/7 a]$ git log --format=oneline | cat
3e7d74af94bcd251466a842a415456b98b74c28c hoge
[umezawaa@umezawa-dev:pts/7 a]$ git log --format=oneline b-master | cat
f196c539a02b29443c2f9449a3f8b3c114dcf733 fuga

いやまあ、だからどうしたって話なんですが。

Trackback

no comment untill now

Add your comment now