La risposta è lì, git ti sta dicendo di recuperare prima.
Probabilmente qualcun altro ha già spinto a padroneggiare e il tuo impegno è alle spalle. Quindi devi recuperare, unire il changeset e poi sarai in grado di eseguire nuovamente il push.
Se non lo fai (o anche peggio, se lo costringi usando l' --force
opzione), puoi rovinare la cronologia dei commit.
EDIT: Entrerò più in dettaglio sull'ultimo punto, dal momento che un ragazzo qui ha appena dato il Pessimo Consiglio di usare l' --force
opzione.
Dato che git è un DVCS, idealmente molti altri sviluppatori stanno lavorando al tuo stesso progetto, usando lo stesso repository (o un fork di esso). Se sovrascrivi con forza il tuo changeset, il tuo repository non corrisponderà ad altre persone, perché "hai riscritto la cronologia". Renderai infelici le altre persone e il deposito ne soffrirà. Probabilmente piangerà anche un gattino nel mondo.
TL; DR
- Se vuoi risolvere, scarica prima (e poi unisci).
- Se vuoi hackerare, usa l'
--force
opzione.
Hai chiesto il primo, però. Scegli 1) sempre, anche se userai sempre git da solo, perché è una buona pratica.