6. C1 C2 C3 C4 C5 C6
❖ Change Message
pick C4 add a.file
pick C5 add first line
pick C6 add second line
Rebase C3..C6 onto C3
edit C4 add a.file
pick C5 add first line
pick C6 add second line
Rebase C3..C6 onto C3
master
HEAD
git rebase -i C3
7. C1 C2 C3 C4 C5 C6
❖ Change Message
add a.file
git commit --amend
change c4 message
C4’ C5’ C6’git rebase --continue
HEAD master
HEAD
master
HEAD
9. C1 C2 C3 C4 C5 C6
pick C4 add a.file
pick C5 add first line
pick C6 add second line
Rebase C3..C6 onto C3
pick C5 add first line
pick C4 add a.file
Rebase C3..C6 onto C3
❖ Reorder Commits
C5’ C4’
git rebase -i HEAD~3
master
HEAD
11. C1 C2 C3 C4 C5 C6
pick C5 add first line
pick C6 add second line
Rebase C4..C6 onto C4
pick C5 add first line
squash C6 add second line
Rebase C4..C6 onto C4
❖ Squash Commits
master
HEAD
git rebase -i HEAD~2
12. C1 C2 C3 C4 C5 C6
# This s a combination of 2 commits.
# The first commit's message is:
add first line
# This is the 2nd commit message:
add second line
❖ Squash Commits
C5C6’
master
HEAD
master
HEAD
tree c9cb48
parent C4
add first line
add second line
git cat-file -p C5’
14. C1 C2 C3 C4 C5 C6
❖ Split a Commit
pick C5 add first line and b.file
pick C6 add second line
Rebase C4..C6 onto C4
edit C5 add first line and b.file
pick C6 add second line
Rebase C4..C6 onto C4
master
HEAD
git rebase -i C4
26. ❖ git reflog
Git Repo
logs
HEAD
refs
heads
master
remotes
origin
master
HEAD
branch1
git reflog show HEAD
git reflog show master
git reflog show remotes/origin/master