2012-11-12 10 views
5

ho voluto ripristinare il puntatore di testa al mio precedente impegnoaggiornamenti rifiutati sulla punta ramo quando si cerca di rebase puntatore di testa

$ git reset --hard HEAD~1 

HEAD trasferisce a commit precedente, tuttavia, in grado di spingere al mio padrone origine

$git push origin master 

! [rejected]  master -> master (non-fast-forward) 
    error: failed to push some refs to 'https://github.com/username/repo.git' 
    hint: Updates were rejected because the tip of your current branch is behind 
    hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
    hint: before pushing again. 

Come spostare il puntatore e comunicare a Git di aggiornare le modifiche?

risposta

7

Per impostazione predefinita, Git non consente di trasferire le modifiche che non hanno la modifica più recente sul server nella loro cronologia. Questo per evitare problemi se qualcun altro ha già tirato il TESTO precedente; quindi spingendo qualcosa che non è un discendente significherà che dovranno fondersi o rebase sul tuo nuovo commit.

Se si sa che nessun altro sta usando il vostro repo, o hanno comunicato con tutti coloro che sono, allora si può spingere con forza le modifiche:

git push -f origin master 

Alcuni server sono configurati per non consentire gli aggiornamenti forzati. Se non lo fanno, si può essere in grado di aggirare l'ostacolo eliminando e ricreando il ramo:

git push origin :master 
git push origin master 

Ma solo fare queste se si sa che nessun altro sta basando il proprio lavoro fuori del vostro, o si può comunicare a tutti coloro che lo sono e assicurarsi di reimpostare correttamente il commit precedente anche nei loro repository locali.

0

Devi dire a git di forzare la spinta perché questo perderà un commit sul telecomando. Questo è un meccanismo di sicurezza in modo da non cancellare inavvertitamente il lavoro. È anche una funzione di comodità in cui è possibile emettere uno git push e tutti i rami impostati per il tracciamento verranno aggiornati sul telecomando con l'eccezione di quelli che finirebbero per cancellare alcuni commit.

Problemi correlati