2016-03-18 14 views
9

GIT continua a confondere me con i suoi avvisi di errore inutili :( Questo merita davvero un premio:Git fusione non è possibile perché non ho i file non uniti

"git merge non è possibile perché si dispone di file non uniti"

la mia situazione:. mio ramo principale su github era stato montato (direttamente nel browser) mentre il mio ramo principale locale è stato anche montato

Stupidamente, io suppone si potrebbe semplicemente unire le due versioni e da fare con esso, ma ahimè, non posso unirmi - perché i miei file non sono bloccati.

git merge remote/master 

risultati in

error: merge is not possible because you have unmerged files. 
hint: Fix them up in the work tree, and then use 'git add/rm <file>' 
hint: as appropriate to mark resolution and make a commit. 
fatal: Exiting because of an unresolved conflict. 

Così, dopo aver aggiunto e commettendo il cambiamento locale e poi cercando di fondere ancora una volta, ottengo:

merge: remote/master - not something we can merge 

Chiaramente mi manca qualcosa di essenziale qui. .. Ho un'idea sbagliata di cosa significa fusione? Come posso risolvere questo problema relativo alla presenza di un altro master remoto/ramo master locale?

risposta

5

Il messaggio di errore:

unione: a distanza/master - non qualcosa che possiamo unire

sta dicendo che Git non riconosce remote/master. Questo probabilmente perché non hai un "telecomando" di nome "remoto". Hai un "telecomando" di nome "origine".

Pensa ai "telecomandi" come alias per l'url del tuo server Git. master è la versione del branch che si è verificato localmente. origin/master è l'ultima versione di master dal tuo server Git che hai recuperato (scaricato). Un fetch è sempre sicuro perché aggiornerà solo la versione "origin/x" dei tuoi rami.

Quindi, per ottenere il vostro ramo master indietro in sincronia, prima scaricare il contenuto più recente dal server git:

git fetch 

Quindi, eseguire la stampa:

git merge origin/master 

... Ma, forse l'approccio migliore sarebbe:

git pull origin master 

Il comando pull farà fetch e merge per te in un solo passaggio.

+0

Grazie Non mi rendevo conto che pull si fonde anche. Ho fatto un recupero e un'unione, ma non sembra accadere nulla - anche se git ora dice che tutto è aggiornato. Mi aspettavo che l'unione mostrasse un "conflitto di unione" in cui devi modificare manualmente le modifiche che vuoi mantenere? – Kokodoko

+0

In questo caso, sembra che Git sia stato in grado di implementare la risoluzione della diff per te ... per essere sicuro di aver preso quello che intendevi un buon strumento di "controllo sanitario" che uso spesso è "gitk". Viene fornito con l'installazione di Git, quindi dovresti già averlo. Basta digitare "gitk" sul terminale di comando per una vista di tipo GUI del tuo albero Git. –

+0

L'unione ha inserito commenti nel mio file, che assomiglia a questo: <<<<<<< HEAD: 7234095827345093458. Forse git non ha trovato il mio strumento fileMerge e ha inserito questi codici per risolverlo in un editor di testo? – Kokodoko

0

Ho incontrato lo stesso problema e non poteva decidere tra ridere o fracassare la testa sul tavolo quando ho letto questo errore ...

Cosa git cerca veramente di dirti: "Tu sei già in una fondere stato e necessità di risolvere prima i conflitti! "

Hai provato un'unione e si è verificato un conflitto.Quindi, git rimane nello stato di fusione e se vuoi risolvere l'unione con altri comandi, git pensa che tu voglia eseguire una nuova unione e quindi ti dice che non puoi farlo a causa dei tuoi file attualmente non raggruppati ...

Puoi lasciare questo stato con git merge --abort e ora provare ad eseguire altri comandi.

Nel mio caso ho provato un tiro e ha voluto risolvere i conflitti a mano quando è verificato l'errore ...

+0

Buona storia, tuttavia non riesco a vedere se c'è una risposta effettiva al problema indicato nella domanda qui :) – BartoszKP

+0

Buono a sapersi io non sono l'unico che è costantemente sconcertato dall'errore criptico di Git messaggi. – Kokodoko

0

ho più volte avuto thesame sfida a volte fa, questo problema si verifica soprattutto quando si sta cercando di tirare dalla repository remoto e alcuni file sull'istanza locale sono in conflitto con la versione remota, se si sta utilizzando git da un IDE come intelliJ, verrà richiesto e autorizzato a fare una scelta se si desidera mantenere le proprie modifiche o si preferisce le modifiche nella versione remota per sovrascrivere il tuo '. Se non fai nessuna scelta, cadi in questo conflitto. tutto quello che dovete fare è eseguire:

git merge --abort # Il conflitto irrisolto sarà spazzato via

e si può continuare quello che stavi facendo prima della pausa

Problemi correlati