2013-02-08 14 views
9

Esiste un efficace opposto di git cherry-pick? Ad esempio qualche tempo fa, ho dovuto apportare alcune modifiche temporanee per disabilitare un insieme di funzionalità a causa di un processo aziendale non pronto. Ora che quel processo aziendale è pronto mi piacerebbe semplicemente rimuovere i commit ed i loro effetti. Mentre potevo, ovviamente, osservare le differenze tra questi commit e capire cosa tutto ciò che doveva essere fatto, sarebbe interessante sapere se chi si impegna nel passato potrebbe non essere pronto senza reimpostare e perdere tutto ciò che è successo dopo loro.Di fronte al git cherry-pick?

+1

probabilmente si intende 'git revert'? –

risposta

12

Il modo automatico per annullare le modifiche apportate da un altro commit è git revert.

+0

Questo, avrei dovuto vedere. – andyortlieb

+1

Questo NON è l'uso opposto 'git rebase -i', invece come spiega la risposta @Kyralessa – Leo

15

git revert non è l'opposto di git cherry-pick. git rebase -i è.

git revert aggiunge un nuovo commit che rimuove le modifiche apportate da uno o più commit precedenti. Non rimuove i commit originali.

git rebase -i ti mostrerà un elenco di commit dal tuo commit corrente, tornando all'ultimo commit non sul tuo ramo upstream. Quindi è possibile modificare, riorganizzare, modificare il messaggio di commit e persino eliminare i commit da questo elenco.

Ricorda che se hai già eseguito il push dei commit che desideri rimuovere, dovrai rimuoverli con i tuoi compagni di squadra, perché dovranno apportare delle modifiche dopo aver spinto la nuova cronologia con il rimosso impegna.

+1

Questo è bello sapere! Mentre rebase -i risponde tecnicamente alla domanda e può essere più pulito a lungo termine, git revert soddisfa il problema che ho espresso. – andyortlieb

+1

"' git revert' aggiunge un nuovo commit che rimuove le modifiche apportate da uno o più commit precedenti. " Sembra * esattamente * come il contrario di 'git cherry-pick'. Forse "inverso" sarebbe una parola migliore di "opposto". –

+1

Se 'git cherry-pick' aggiunge un commit, il contrario sarebbe rimuovere quel commit. Non aggiungere _another_ commit. –