6月
05
普通に 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
いやまあ、だからどうしたって話なんですが。
ルートコミットを複数持つ git リポジトリの GitHub 上での見え方
ルートコミットを複数持つ git リポジトリを無理やり作ることができることは以前書きました。一方、GitHub には Network Graph としてリビジョン間のグラフを表示する機能があります。で、ど…