Come risolvere l'errore Git: è necessario prima risolvere l'indice corrente

L'errore " Devi prima risolvere il tuo indice attuale " si verifica in Git e significa che c'è un conflitto di unione e, a meno che tu non risolva il conflitto, non ti sarà permesso effettuare il checkout in un altro ramo. Questo messaggio di errore indica anche che l'unione non è riuscita o che ci sono conflitti con i file.

Errore: è necessario prima risolvere l'indice corrente

Cosa sono tutti questi file, fusioni e conflitti? Questi termini ti saranno sconosciuti se sei un principiante nell'uso di Git. Git è una piattaforma di controllo della versione che consente a più persone di lavorare su file contemporaneamente e di inviare la loro copia locale del codice a quella memorizzata nel cloud. In questo modo se si modifica un codice scaricato (o già inviato) e lo si spinge nuovamente nel cloud, le modifiche verranno sovrascritte nel cloud dalla propria copia locale.

Git ha un concetto di rami. C'è un ramo principale e molti altri rami si diramano da esso. Questo errore si verifica in particolare se si passa da un ramo all'altro (utilizzando il checkout) e si verificano conflitti nei file del ramo corrente. Se non vengono risolti, non sarà possibile cambiare ramo.

Cosa causa l'errore Git: devi prima risolvere il tuo indice attuale?

Come accennato in precedenza, le cause di questo errore sono piuttosto limitate. Si verificherà questo errore perché:

  • Un'unione fallita ed è necessario affrontare il conflitto di unione prima di passare ad altre attività.
  • Vi sono conflitti nei file nel tuo attuale (o ramo di destinazione) e, a causa di questi conflitti, non sarai in grado di estrarre da un ramo o inviare un codice push.

Prima di procedere con la soluzione, assicurarsi di disporre del controllo della versione corretto ed è consigliabile impedire ad altri membri del team di modificare il codice prima di risolvere il conflitto.

Soluzione 1: risoluzione del conflitto di unione

Se la tua unione non viene risolta automaticamente da Git, lascia l'indice e l'albero di lavoro in uno stato speciale che ti aiuta a fornire tutte le informazioni necessarie per risolvere la fusione. I file che presentano conflitti verranno contrassegnati appositamente nell'indice e fino a quando non si risolve il problema e si aggiorna l'indice, si continuerà a ricevere questo messaggio di errore.

  1. Risolvi tutti i conflitti . Controllare i file che presentano conflitti poiché saranno contrassegnati dall'indice e apportare le modifiche di conseguenza.
  2. Dopo aver risolto tutti i conflitti esistenti, aggiungere il file e quindi eseguire il commit .

Un esempio è:

 $ git aggiungi file.txt $ git commit 

Puoi aggiungere il tuo commento personale durante il commit. Un esempio è:

 $ git commit –m "Questo è il repository Appuals Git" 
  1. Dopo aver risolto il conflitto, prova a estrarre dalla filiale esistente e vedere se il problema è stato risolto.

Soluzione 2: ripristinare l'unione

Esistono numerosi casi in cui si uniscono i rami e si incasinano. A causa di tutti i conflitti e la confusione, il progetto ora è un disastro e i membri del tuo team ti danno la colpa. In questo caso, è necessario ripristinare il commit precedente (il commit di unione) . Questo annullerà completamente l'unione e riporterà l'intero progetto in uno stato quando non hai fatto alcuna fusione. Questo può essere un vero toccasana se hai incasinato cose irreparabili.

Per ripristinare l'unione, digitare quanto segue:

 $ git reset –merge 

Il comando sopra ripristina l'indice e aggiorna i file nella struttura di lavoro che sono diversi tra 'commit' e 'head'. Tuttavia, manterrà quei file che sono diversi tra l'indice e l'albero di lavoro.

Puoi anche provare a ripristinare HEAD usando il comando seguente:

 $ git ripristina HEAD 

Se si desidera specificare il commit di unione esatto che si desidera ripristinare, è possibile utilizzare lo stesso comando di ripristino ma specificare parametri aggiuntivi. Verrà utilizzato l'hash SHA1 del commit di unione. Il -m seguito da 1 indica che vogliamo mantenere il lato genitore dell'unione (il ramo in cui ci stiamo unendo). Il risultato di questo ripristino è che Git creerà un nuovo commit che ripristina le modifiche dall'unione.

 $ git revert -m 1 dd8d6f587fa24327d5f5afd6fa8c3e604189c8d4> 

Articoli Interessanti