У меня возникла аналогичная ситуация, и я делаю это:
Я выберу файл, который был удален в checkout index.php.
В вашем .gitignore ветви A и ветвь B удаляют строку, которая игнорирует ваш index.php, после этого фиксируйте свой .gitignore в обеих ветвях.
В ветви A создайте резервную копию index.php, удалите это и зафиксируйте.
Восстановить в ветке A index.php из созданной ранее резервной копии и в вашем .gitignore снова игнорировать index.php и зафиксировать это.
В вашей ветке B добавить index.php, игнорировать файл в вашем .gitignore, зафиксировать и быть счастливым.