https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa git rebase -p preserve ... ??? git config --global rerere.enabled = true rerere - reuse recorded resolution git log ..master git rebase [-i] is typically just master resolve the conflicts, if any, ... another usage of rebase is history manipulation git rebase -i HEAD~4 start interactive rebase (and specify commit to squish into). stage 1 - edit a stuff in editor: pick log1 pick log2 squash pick log3 pick leave as is s[quash] keep the commit message, merge the commit output edit edit the files in the commit (we go into a detached HEAD state for doing this) then - git rebase --continue reword change the commit message only squash keep the commit message fixup like squash, but throw-away the commit message drop the commit from the history (graph), but we can reorder commits # Rebase .. onto stage 2 - edit the cummulative note Note: everything started from # will be ignored