merge commitやらFastFowardやらマージについてある程度理解できてきたので、図を混ぜつつ自分なりに整理してみようと思います。
検証
初期登録
テストリポジトリを作成して、ファイルの初期登録を行います。
$ mkdir test;cd $_
$ git init
$ echo 'aaa' > a.txt;echo 'bbb' > b.txt
$ git add .
$ git commit -m 'init'
master
のファイル内容
a.txt
aaa
b.txt
bbb
git log
$ git log master --oneline
c06bbc0 init
dev
ブランチを作成してdev
にcommit
$ git checkout -b dev
$ echo 'devブランチで修正' >> b.txt
$ git add .
$ git commit -m 'update b.txt'
dev
のファイル内容
a.txt
aaa
b.txt
bbb
devブランチで修正
git log
$ git log master --oneline
c06bbc0 init
$ git log dev --oneline
531732d update b.txt
c06bbc0 init
master
にcommit
$ git checkout master
$ echo 'masterブランチで修正' >> a.txt
$ git add .
$ git commit -m 'update a.txt'
master
のファイル内容
a.txt
aaa
masterブランチで修正
b.txt
bbb
git log
$ git log master --oneline
17f9c80 update a.txt
c06bbc0 init
$ git log dev --oneline
531732d update b.txt
c06bbc0 init
dev
にmaster
の内容をmerge
$ git checkout dev
$ git merge master
### Fast-Forwad出来ないので適当なコミットコメント設定
$ git add .
$ git commit -m 'update a.txt'
dev
のファイル内容
a.txt
aaa
masterブランチで修正
b.txt
bbb
devブランチで修正
git log
$ git log master --oneline
17f9c80 update a.txt
c06bbc0 init
$ git log dev --oneline
b2a61a2 Merge branch 'master' into dev
17f9c80 update a.txt
531732d update b.txt
c06bbc0 init
dev
にcommit
$ echo 'ccc' >> c.txt
$ git add .
$ git commit -m 'add c.txt'
dev
のファイル内容
a.txt
aaa
masterブランチで修正
b.txt
bbb
devブランチで修正
c.txt
ccc
git log
$ git log master --oneline
17f9c80 update a.txt
c06bbc0 init
$ git log dev --oneline
576d44b add c.txt
b2a61a2 Merge branch 'master' into dev
17f9c80 update a.txt
531732d update b.txt
c06bbc0 init
master
にdev
の内容をmerge
$ git checkout master
$ git merge dev
master
のファイル内容
a.txt
aaa
masterブランチで修正
b.txt
bbb
devブランチで修正
c.txt
ccc
git log
$ git log master --oneline
576d44b add c.txt
b2a61a2 Merge branch 'master' into dev
17f9c80 update a.txt
531732d update b.txt
c06bbc0 init
$ git log dev --oneline
576d44b add c.txt
b2a61a2 Merge branch 'master' into dev
17f9c80 update a.txt
531732d update b.txt
c06bbc0 init
以上。