Вчера на Хабре вышел перевод прошлогодней
статьи, там чувак рассказывает про внутренние механизмы гита и в том числе про two stage rename tracking process, типа сначала гит пытается заматчить OID'ы перемещенных файлов, содержимое которых не менялось, а затем пытается задетектить renames+edits, но это, понятно, дорого и ненадежно, как и любая эвристика, поэтому чтобы помочь гиту трекать историю, он советует делать два коммита:
• Rename all of the files without changing the blobs
• Modify the blobs without changing filenames