Se eu entendi corretamente o seu problema, você tem três repositórios
- Um controle remoto no github
- Um local para desenvolvimento
- Um local em seu servidor de estadiamento
Você primeiro atualizou todos os repositórios, depois reescreveu o histórico no controle remoto e no desenvolvimento e tentou puxar o estadiamento. Infelizmente, a encenação já tinha sua própria história, então tente o seguinte na encenação:
git fetch
git reset --hard origin/staging
Isso forçará a história da encenação a ser reescrita também.