Parece que você está tentando rastrear um arquivo (por exemplo index.php), adicioná-lo a um repositório remoto e, em seguida, parar de assistir ao rastreá-lo, enquanto mantém o arquivo no remoto (ou seja, mantém index.phpinalterado no repositório remoto enquanto o altera localmente).
Pelo que entendi, o git não pode fazer isso. Você pode acompanhar um arquivo ou não. Se você rastreia um arquivo, ele existe no repositório remoto e muda quando você efetua as mudanças nele. Se você não controla um arquivo, ele não existe no repositório remoto.
Como não é possível fazer exatamente o que você deseja com o git, existem potencialmente outras soluções, dependendo da sua situação exata. Por exemplo, por que você não deseja index.phpalterar no controle remoto quando você altera localmente? Existem configurações específicas do usuário no arquivo? Se for esse o caso, você pode fazer:
cp index.php index_template.php
git rm --cached index.php
Agora edite index_template.php para que fique como você deseja que apareça no repositório remoto. Adicione algo ao seu README para dizer às pessoas que usam seu repositório que, uma vez que o clonem, devem copiar index_template.php para index.php e editá-lo para atender às suas necessidades.
git add index_template.php
git add README
git commit -m 'added template index.php file'
git push
Quando alguém clona seu repo, ela deve criar o seu próprio index.php. Você fez mais fácil para eles: simplesmente copiar index_template.phppara index.phpe revisá-lo com as configurações específicas do computador.