Вот как бы я это сделал.
Извлеките старую версию файла B и передайте ее
git checkout HEAD~3 -- fileB
git commit -m"fix fileB" fileB
Теперь перебазируем на сквош в вашем исправлении со старым коммитом
git rebase -i HEAD~3
теперь переместите ваш последний коммит "fix fileB", чтобы он был после коммита 2, и измените инструкцию "pick" на "squash", объединяя файл изменения коммита B с коммитом, сбрасывающим его.