
Fare accidentalmente la cosa sbagliata è molto comune quando si lavora con Git, ma fortunatamente , è costruito per tenere traccia della cronologia delle versioni del tuo repository. C'è sempre un modo per annullare le modifiche apportate e se vuoi annullare un'unione Git, è abbastanza facile.
Annullare un Git Merge
Fondamentalmente, ci sono due modi per farlo, e tutto dipende dal fatto che tu abbia già inviato o meno le modifiche al tuo controllo del codice sorgente. Se hai già eseguito il commit e il push a un servizio come GitHub, è generalmente considerato immutabile, a meno che tu non voglia forzare il push, il che è pericoloso. Non vuoi mai “cancellare” commit e git merge vengono aggiunti come “merge commits.” Ti consigliamo di utilizzare git revert per annullare in modo sicuro le modifiche ed eseguire il commit dell'annullamento come nuovo commit.
Tuttavia, se hai appena incasinato qualcosa a livello locale, hai imprecato sulla tastiera e hai cercato una soluzione su Google, puoi comunque eliminare in sicurezza il commit di unione e mantenere pulita la cronologia di Git con un semplice ripristino di Git.
Ripristino locale
È più facile e più sicuro gestire i ripristini Git con un client Git della GUI, dove puoi vedere facilmente il ramo storia. Ovviamente non è necessario, ma l'aspetto visivo aiuta quando hai rami complessi.

In questo esempio, vogliamo annullare l'unione del ramo della caratteristica nel ramo principale. Poiché il feature branch’non è stato effettivamente toccato, vogliamo reimpostare il ramo “principale” etichetta di ramo in modo che punti all'ultimo commit.
Per fare ciò, vogliamo git checkout il ramo principale, quindi reimpostare il commit precedente. La scorciatoia per questo è HEAD^, e possiamo eseguire un hard reset all'ultimo commit. Se non ti senti a tuo agio con un approccio “distruttivo” reset, puoi eseguire un ripristino software e quindi eliminare manualmente le modifiche al commit di unione.
git reset –hard HEAD^

Come puoi vedere, questo elimina completamente il commit di unione e lascia intatto il feature branch.
RELATEDCome funziona effettivamente Git Reset? Spiegazione dei reset soft, hard e misti
Se il commit che devi reimpostare non è l'ultimo prima dell'attuale HEAD del ramo, puoi semplicemente copiare l'ID SHA1 per esso e reimpostare su quel commit specifico.
Ripristino di un commit già inviato
Sfortunatamente, se hai già effettuato il push, non c'è modo di rimuovere il merge commit senza sovrascrivere la cronologia del tuo repository. Puoi eseguire gli stessi passaggi mostrati sopra e inviare al repository upstream (come GitHub) con il flag –force. Ma questo è generalmente considerato distruttivo e pericoloso quando hai più collaboratori, poiché dovranno tutti aggiornare i loro repository locali.
L'altro modo per annullare i commit in Git è ripristinarli. Il ripristino di un commit applicherà le modifiche opposte al repository: per ogni riga aggiunta, quella riga viene rimossa. Per tutto ciò che viene eliminato, viene aggiunto di nuovo e così via. Questo inverte efficacemente il commit, con lo svantaggio che questo processo ingombra un po' la cronologia delle versioni. In generale, tuttavia, questa è una buona pratica per invertire gli errori.

Il ripristino di un commit è piuttosto semplice. Innanzitutto, dovrai eseguire git log per ottenere un elenco di commit e i loro numeri ID.
Quindi, puoi copiare l'hash SHA1 e ripristinare il commit con git revert:
git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f
Dovrai inviare questo nuovo “ ripristina commit” a GitHub per risolvere il problema.
LEGGI SUCCESSIVO
- › Qual è il limite di caratteri per ChatGPT?
- › Puoi (ancora una volta) ottenere Game Pass Ultimate per $ 1
- › Ottieni il MacBook Air M1 a soli $ 750, il prezzo più basso di sempre
- › GIMP 2.99.16 ha nuove opzioni di interfaccia e più formati di file
- › Risparmia fino a $ 1.199 sulle centrali elettriche portatili BLUETTI per il Prime Day
- › ChatGPT vs. GPT 3: qual è la differenza?