Sembra aver riscritto la vostra storia (SHA-1 associato con i tuoi commit) nel branch master
Ciò significa, non è più possibile spingere in una modalità fast-forward
maestri forze + la spinta a prendere posto:..
By avendo il comando opzionale +, puoi dire a git di aggiornare il ref <dst>
anche quando l'aggiornamento non è un avanzamento veloce.
Nota: questo potrebbe essere negativo se qualcun altro ha già clonato il repository, dal momento che non sarà più in grado di estrarre il ramo principale senza alcun conflitto.
Vedere anche questo SO answer for more.
Nota: come accennato by Junio C. Hamano:
Ci sono due meccanismi di sicurezza indipendenti:
sicurezza all'estremità di invio può essere sovrascritta "git push --force
" e/o utilizzando un refspec preceduto da un prefisso "+
");
la sicurezza di ricezione può essere sostituita dalla variabile di configurazione receive.denynonfastworwards
del repository in cui si sta spingendo.
Quest'ultimo default "non sicuro", ma se la sicurezza è attivato nel repository, costringendo dal lato di invio non disattivarla. IOW, entrambe le estremità devono essere d'accordo per consentire il comportamento non sicuro.
Come menzionato nella Git FAQ, una possibile linea d'azione è:
La ragione più probabile di questo è che è necessario tirare dal telecomando prima. Puoi vedere quali modifiche ha il lato remoto recuperando prima e poi controllando il registro.Ad esempio,
$ git fetch origin
$ git log master..origin/master
elencherà tutti i cambiamenti dal lato remoto ha che il vostro lato non lo fa.
Se si desidera una rappresentazione grafica, utilizzare gitk --left-right master...origin/master
.
Le frecce a sinistra sono le modifiche che si desidera premere, le frecce a destra sono le modifiche sul lato remoto.
Altro soluzione (che è quello che hai fatto):
$ git push origin +branchname
Questo costringerà l'aggiornamento. Se non si dispone dell'autorizzazione, poi a volte questo lavoro:
$ git push origin :branchname
$ git push origin +branchname
cioè, eliminare il ramo remoto prima (questo è spesso consentita), poi ri-spingere il "nuovo" (o forse riavvolto) ramo.
Attenzione, se si riavvolgono i rami, altri potrebbero entrare in difficoltà durante la trazione.
C'è la possibilità che si uniscano nel ramo che hanno recuperato con quello nuovo che hai pubblicato, mantenendo effettivamente le modifiche che stai cercando di eliminare.
Tuttavia, saranno le loro copie ad avere le brutte revisioni. Per questo motivo, i rami di riavvolgimento sono considerati leggermente antisociali. Tuttavia, è spesso appropriato.
Aggiunta un'altra soluzione, in risposta al tuo commento. – VonC