Contents
Merge
mkdir git-merge && cd git-merge
git init
echo "m1" >> main && git add . && git commit -m "m1"
echo "m2" >> main && git add . && git commit -m "m2"
git checkout -b feature
echo "f1" >> feature && git add . && git commit -m "f1"
echo "f2" >> feature && git add . && git commit -m "f2"
git checkout master
echo "m3" >> main && git add . && git commit -m "m3"
git log --graph --oneline --all
* 0d0ef29 (HEAD -> master) m3
| * f7695f7 (feature) f2
| * 1fd60a0 f1
|/
* f16cfb8 m2
* a0d3a6d m1
git merge feature master
git log --graph --oneline --all
* 4bbbc3e (HEAD -> master) Merge branch 'feature'
|\
| * f7695f7 (feature) f2
| * 1fd60a0 f1
* | 0d0ef29 m3
|/
* f16cfb8 m2
* a0d3a6d m1
git checkout feature
git log --graph --oneline --all
* 4bbbc3e (master) Merge branch 'feature'
|\
| * f7695f7 (HEAD -> feature) f2
| * 1fd60a0 f1
* | 0d0ef29 m3
|/
* f16cfb8 m2
* a0d3a6d m1
Rebase
mkdir git-rebase && cd git-rebase
git init
echo "m1" >> main && git add . && git commit -m "m1"
echo "m2" >> main && git add . && git commit -m "m2"
git checkout -b feature
echo "f1" >> feature && git add . && git commit -m "f1"
echo "f2" >> feature && git add . && git commit -m "f2"
git checkout master
echo "m3" >> main && git add . && git commit -m "m3"
git log --graph --oneline --all
* ed27a38 (HEAD -> master) m3
| * 8d80a63 (feature) f2
| * fcf4daa f1
|/
* 0e68475 m2
* 0937f25 m1
git rebase feature master
git log --graph --oneline --all
* 0e0f1e9 (HEAD -> master) m3
* 8d80a63 (feature) f2
* fcf4daa f1
* 0e68475 m2
* 0937f25 m1
git checkout feature
git log --graph --oneline --all
* 0e0f1e9 (master) m3
* 8d80a63 (HEAD -> feature) f2
* fcf4daa f1
* 0e68475 m2
* 0937f25 m1
Summary
Merge | Rebase | |
---|---|---|
Integrating Commit | Y | N |
History Cleanup | N | Y |
The Perils of * | N | Do not rebase commits that exist outside your repository and people may have based work on them |