22

Ho avuto un piccolo conflitto in un file di intestazione .h in un progetto su cui sto lavorando. Questo progetto è tracciato in Git.Ripulire dopo una fusione git conflittuale?

Fortunatamente, il conflitto era molto semplice da risolvere. Ho usato

git mergetool

e abbiamo scelto il default (opendiff) che sembrava essere FileMerge sul mio Mac. Ho apportato le modifiche appropriate, salvato il file e chiuso.

Git poi mi ha chiesto se la fusione ha avuto successo, ho detto di sì:

Was the merge successful? [y/n] y

Ma ora, ho:

> git st 
# On branch develop 
# Changes to be committed: 
# modified: MyHeader.h 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# MyHeader.h.BACKUP.52920.h 
# MyHeader.h.BASE.52920.h 
# MyHeader.h.LOCAL.52920.h 
# MyHeader.h.REMOTE.52920.h 
# MyHeader.h.orig 

Quale di questi file in più di conflitto spazzatura sono stati creati da FileMerge, e quale da Git?

E, ancora più importante: Come rimuoverli?

risposta

39

Puoi semplicemente cancellarli come faresti con qualsiasi altro file. Per esempio:

rm MyHeader.h.orig 

In alternativa, se non ci sono altri file non monitorate, poi dopo si impegnano con

git commit -a 

si può pulire il repository con

git clean -n 
git clean -f 

git clean -n vi dirà che cosa git clean -f lo farà, così puoi essere sicuro che è quello che vuoi.

+0

Grazie -' git clean -n/-f' è stato il go-to per molto tempo. È anche possibile specificare un percorso alla fine, se si desidera solo eseguire la pulizia su una sottocartella. –

+0

A volte * .orig si trova nel file ** .gitignore **. In questo caso la strada da percorrere è la prova a secco che include i file ignorati: 'git clean -nx */*. Orig', controlla e poi cancella' git clean -fx */*. Orig'. Il credito va a: http://travisjeffery.com/b/2011/12/keeping-your-git-repo-clean-of-orig-files/ –

7

Se sono gli unici file non tracciati, è possibile utilizzare git clean per eliminarli. Eseguilo una volta con il flag -n per vedere cosa verrà eliminato, quindi, se sei sicuro, eseguilo con -f. Non usarlo se hai file non tracciati che vuoi mantenere!

+1

Nota: "se sono gli unici file non tracciati". Fai molta attenzione con 'git clean', dato che potresti facilmente perdere i file che non sono sotto controllo di versione! Consiglierei di rimuoverli manualmente. –

+0

O, ho preso l'abitudine di usare un modello di file, come: 'git clean -f * .orig' –

1

Prima eseguire l'unione.

Una volta che si è soddisfatti che tutto va bene, è sufficiente rimuovere manualmente questi file aggiuntivi (utilizzando rm <filename>, ad esempio).