L'errore:
Ho modificato git rebase -i --root
il mio ramo, pensando con ignoranza che avrei potuto riformulare il primo commit diverso dal master (la visualizzazione predefinita di GitHub per Windows è il confronto con il master, nascondendone la totalità).
Mi sono fatto crescere la barba della Silicon Valley mentre oltre 900 si sono caricati in Sublime. Uscendo senza modifiche, ho caricato la mia batteria e poi ho iniziato a radermi, poiché tutti i 900+ utenti si sono trasferiti con nonchalance, ripristinando i loro tempi di commit fino ad ora.
Determinato a battere Git e preservare i tempi originali, ho eliminato questo repository locale e ri-clonato dal telecomando.
Ora aveva aggiunto nuovamente un commit non necessario più recente al master che desideravo rimuovere, quindi ho proceduto in questo modo.
Esaurendo le opzioni:
Non volevo git revert
- avrebbe creato un ulteriore impegno, dando a Git il sopravvento.
git reset --hard HEAD
non ha fatto nulla, dopo aver verificato il reflog
, l'ultimo e unico è HEAD
stato il clone - Git vince.
Per ottenere lo SHA più recente, ho controllato il repository remoto su github.com - vincita minore.
Dopo aver pensato che git reset --hard <SHA>
avesse funzionato, ho aggiornato un altro ramo per master e 1 ... 2 ... poof! il commit è tornato - Git vince.
Tornando al master, è tempo di provare git rebase -i <SHA>
, quindi rimuovere la linea ... inutilmente, triste da dire. " Se rimuovi una linea qui QUELLO IMPEGNO SARÀ PERSO ". Ah ... sorvolato sulle nuove funzionalità, troll dell'n00b nelle note di rilascio 2.8.3 .
La soluzione:
git rebase -i <SHA>
allora d, drop = remove commit
.
Per verificare, ho controllato su un altro ramo e voilà - nessun impegno nascosto per recuperare / estrarre dal master.
https://twitter.com/holman/status/706006896273063936
Buongiorno a te.
cherry-pick
edelete
un singolo che potrebbe commettere accaduto qualche tempo fa.