Como o git rastreia o código fonte movido entre os arquivos?

Aparentemente, quando você move uma função de um arquivo de código-fonte para outro, o log de revisão do git (para o novo arquivo) pode mostrar de onde esse fragmento de código vem originalmente (veja por exemplo a seção Histórico de visualização emeste tutorial).

Como é que isso funciona?