普通に 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

only 1 comment untill now

  1. ルートコミットを複数持つ git リポジトリの GitHub 上での見え方

    ルートコミットを複数持つ git リポジトリを無理やり作ることができることは以前書きました。一方、GitHub には Network Graph としてリビジョン間のグラフを表示する機能があります。で、ど…

Add your comment now