2012-01-20 16 views
52

Ho iniziato a lavorare su un progetto e ho eseguito alcuni commit indesiderati che ho spinto al master di origine. Ora, quando provo a fare una richiesta di pull, Github vuole impegnare tutti i commit precedenti.Git Rimuove i commit indesiderati da una richiesta di pull

La mia domanda è, come posso rimuovere i commit indesiderati e commettere le modifiche che voglio commettere in modo che io sia aggiornato con il master?

+0

Cercare "git rebase". puoi schiacciare i commit insieme e lasciare alcuni commit fuori. –

risposta

34

Suppongo che la tua origine sia la tua parte di un progetto che vuoi fare anche tu una richiesta di pull?

Dato che cambierai la cronologia (reimpostando la testa) dovrai premere con --force flag. Individua l'hash dell'ultima commit valida utilizzando git log.

Ora gestiscono

git reset SHA 

Questo cambierà la vostra testa a quella sha e preservare le modifiche nei file dal momento che l'ultima buona commettere, l'indice sarà anche ripristinato.

Ora è possibile modificare il codice e eseguire i commit desiderati. Ma devi fare git push --force da quando hai cambiato la cronologia del repository. Ciò significa che chiunque abbia biforcato il tuo repository non sarà in grado di estrarre più le tue modifiche. Ma sarai in grado di fare una richiesta di pull al tuo upstream.

+0

La forza sta spingendo solo un problema se qualcuno ha abbandonato il ramo su cui si basava la mia richiesta pull? O se fanno qualche fork dal mio repository? Se eliminano il ramo incriminato, possono sincronizzarsi nuovamente con il mio repository? C'è un modo per rimuovere i commit da una richiesta pull senza forzare? – endolith

+1

@endolith Solo se si basano sul tuo ramo. Qualsiasi commit discendente da un commit che verrà successivamente ridefinito sarà interessato e non può essere unito in modo banale in quanto il commit originale non esiste più. Fintanto che nessuno si fonde o si impegna in base alla tua richiesta di pull finché la tua forza non viene forzata a spingere la tua libera per cambiare la tua richiesta di pull spingendo con forza il tuo ramo, se lo desideri. Non dovrebbe accadere se chiarisci nella tua richiesta di pull che la stai attivamente modificando. –

+0

La richiesta pull deve essere aperta affinché il cambio di diramazione abbia effetto –

0

Se stai usando git gui, goto git gui e visualizza la cronologia del tuo ramo. (prima di eseguire il passaggio successivo, eseguire un backup delle modifiche locali che si desidera premere) Fare clic con il pulsante destro del mouse sul punto in cui il ramo desidera reimpostare il master e fare clic su Ripristina. Dopo il ripristino, nella riga di comando, digitare git push -f Ora apportare le modifiche necessarie nel ramo, confermare nuovamente. Se si crea una richiesta di pull ora, avrà solo il nuovo commit dopo il reset del ramo.

Problemi correlati