Gitでリベースしてみる
Gitでリベースしてみる。
現状
現状、sample.txtのファイルが1つある状態。
$ cat sample.txt 111 222 333 $ git status # On branch master nothing to commit (working directory clean) $ git branch * master
mergeの場合
ブランチ側でファイルを修正する。
$ git checkout -b test Switched to a new branch 'test' $ vi sample.txt 111 222 333 444 $ git commit -a -m 'ブランチ側で444を追加' [test aa25e5c] ブランチ側で444を追加 1 files changed, 1 insertions(+), 0 deletions(-)
マスター側でファイルを修正する。
$ git checkout master Switched to branch 'master' $ vi sample.txt 000 111 222 333 $ git commit -a -m 'マスター側で000を追加' [master bb25fa8] マスター側で000を追加 1 files changed, 1 insertions(+), 0 deletions(-)
ブランチ側にマージする。
$ git checkout test $ git merge master Auto-merging sample.txt Merge made by recursive. sample.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
反映された。
$ cat sample.txt 000 111 222 333 444
グラフは下記のようになる。
$ git log --graph * commit 29188b117e1ca884649cc9d9df62f864c09937ce |\ Merge: c643539 bbf341b | | Author: Your Name <you@example.com> | | Date: Tue Mar 4 08:46:17 2014 +0900 | | | | Merge branch 'master' into test | | | * commit bbf341b4167aa9937c6cbc0e4e4c819ec89dd637 | | Author: Your Name <you@example.com> | | Date: Tue Mar 4 08:45:33 2014 +0900 | | | | マスター側で000を追加 | | * | commit c6435393796ba162b0e2f4d70387e3bbc8488784 |/ Author: Your Name <you@example.com> | Date: Tue Mar 4 08:44:58 2014 +0900 | | ブランチ側で444を追加 |
元に戻す
一旦元に戻して、下記の状態にする。
$ cat sample.txt 111 222 333 $ git status # On branch master nothing to commit (working directory clean) $ git branch * master
リベースしてみる
ブランチ側でファイルを修正する。
$ git checkout -b test Switched to a new branch 'test' $ vi sample.txt 111 222 333 444 $ git commit -a -m 'ブランチ側で444を追加' [test 8f04162] ブランチ側で444を追加 1 files changed, 1 insertions(+), 0 deletions(-)
マスター側でファイルを修正する。
$ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 3 commits. $ vi sample.txt 000 111 222 333 $ git commit -a -m 'マスター側で000を追加' [master 9fb9b2b] マスター側で000を追加 1 files changed, 1 insertions(+), 0 deletions(-)
ブランチ側にリベースする。
$ git checkout test $ git rebase master First, rewinding head to replay your work on top of it... Applying: ブランチ側で444を追加 Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging sample.txt
反映された。
$ cat sample.txt 000 111 222 333 444
グラフは下記のようになる。
$ git log --graph * commit c18b545a8507701b35f339f879be713a5ffa68b0 | Author: Your Name <you@example.com> | Date: Tue Mar 4 09:03:07 2014 +0900 | | ブランチ側で444を追加 | * commit 9fb9b2b0e326fa31284dd4954606f35f79a9cc87 | Author: Your Name <you@example.com> | Date: Tue Mar 4 09:03:37 2014 +0900 | | マスター側で000を追加 |
【参考】 こわくない Git http://www.slideshare.net/kotas/git-15276118