Understanding and mastering Git by Reuven M. Lerner