Summary
This chapter has shown us how to effectively join two lines of development together, combining commits they gathered since their divergence.
First, we got to know various methods of combining changes – merge, cherry-pick, and rebase. This part focused on explaining how these functionalities work at higher levels – at the level of the DAG of revisions. You learned how merge and rebase work and what the difference is between them. Some of the more interesting uses of rebase, such as transplanting a topic branch from one long-lived branch to another, were also shown.
Then, you learned what to do if Git is not able to automatically combine changes – that is, what can be done in the presence of a merge conflict. The important part of this process is to understand how the three-way merge algorithm works, as well as how the index and the working area are affected if there are conflicts. You now know how to examine failed merges, examine proposed resolutions...