Ripristina l'unione di un solo file


112

Sono nel mezzo di una grande unione e ho git mergetoolrisolto tutti i conflitti, ma non ho ancora eseguito il commit, poiché prima volevo assicurarmi che l'unione fosse corretta.

Si scopre che ho commesso un errore durante la risoluzione dei conflitti in un file e vorrei ripetere la risoluzione dei conflitti con git mergetoolsu quel file. Poiché si tratta di una grande unione, vorrei evitare di rifare l'unione su tutti gli altri file, poiché ho capito che avrei dovuto fare con git merge --abort.

So che potrei semplicemente modificare il file manualmente, ma sarebbe piuttosto noioso e sarebbe molto più semplice ripetere l' git mergetooloperazione. È possibile?


1
Possibile duplicato di Come riunire un file in git?
jocull

Risposte:


181

Sembra che stavo solo cercando nel posto sbagliato. La soluzione si è rivelata abbastanza semplice.

git checkout -m <file>

Ciò riporta il file al suo stato di conflitto. Posso quindi correre git mergetoola rifare l'unione.


2
Questo tipo di ha funzionato per me. L'indice è finito in uno stato unito, ma Mergetool non ha ritenuto che ci fossero fusioni in sospeso. Ho appena fatto l'unione usando vi, ma era comunque strano.
Chris Cleeland,

1
grazie! questo è esattamente ciò che è necessario. A proposito, l'unione manuale con vi è sempre un piacere e appagante. spostarmi a sinistra o spostarmi a destra non mi ha mai dato la certezza che l'unione stia andando come previsto
asgs

1
Ci sono alcuni dettagli aggiuntivi utili (con la stessa risposta) nella risposta di questa domanda duplicata .
Joshua Goldberg

-4

Puoi sempre modificare i file manualmente.

Se stai usando git merge --no-commit, allora avrai semplicemente un commit preparato (dopo l'unione automatica e semi-automatica).

Puoi comunque modificare in sicurezza i file e eseguire il commit solo quando completamente soddisfatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.