2010-01-19 15 views
43

Sono attualmente nel ramo 'pippo'. Ho appena eseguito git merge master. L'unico problema è che c'era un determinato file in foo che volevo mantenere. C'è un modo per riaverlo ma mantenere tutte le altre modifiche da un master di fusione?git recupera il singolo file che è stato cancellato durante un'unione

+0

'git merge' non rovinerà un file a meno che non sia immutato nell'albero di lavoro e vi sia una modifica da introdurre dall'altro ramo. Per chiarezza, l'unione è stata completata correttamente e si desidera la versione precedente dal ramo o l'unione ha generato conflitti e si desidera che la versione risolta assomigli alla versione precedente del ramo? –

+0

Sì, l'unione ha avuto esito positivo. Volevo la vecchia versione del file. – tybro0103

risposta

46

provare qualcosa di simile:

git checkout HEAD -- filename 

Questa rotolerà il vostro uno FileBack commesso. Se vuoi tornare indietro a un commit specifico, puoi usare un hash di commit o aggiungere^N alla fine della parola chiave HEAD, ad es. HEAD^2.

+3

O se l'unione non è ancora completa (a causa di conflitti), basta git checkout filename. – paxos1977

+4

@ceretullis: se è dovuto a conflitti nel file in questione è necessario 'git checkout --ours filename'. –

+0

In realtà ho finito per trovarlo altrove ma ho usato un hash di commit al posto di HEAD^1 ... grazie! – tybro0103

0

Non sono sicuro di come correggere il problema dalla situazione attuale, ma si consiglia di guardare git merge -s ours. I documenti sono here.

Un flusso di lavoro sarebbe

  1. Creare ramo a da master
  2. fare un cambio personalizzato nel ramo a che non si vuole fondersi di nuovo in master
  3. Partenza master e git merge -s ours a
  4. Controlla a e continua a lavorare e ad impegnarsi.

Ora quando si esegue l'unione con il master, le modifiche personalizzate nel passaggio 2 verranno ignorate.

+0

I documenti non sono più qui, purtroppo. ;) – poige

Problemi correlati