2009-08-09 17 views
354

Quando faccio risoluzione merge conflitto con KDiff3 (e altro strumento di unione ho provato) ho notato che sulla risoluzione viene creato un file *.orig. C'è un modo per non creare quel file in più?Git mergetool genera indesiderati file .orig

risposta

577

Una possibile soluzione da git config:

git config --global mergetool.keepBackup false 

Dopo aver eseguito una stampa, il file originale con marcatori di conflitto possono essere salvati come file con estensione .orig.
Se questa variabile è impostata su false, questo file non viene conservato.
Il valore predefinito è true (ad esempio, conservare i file di backup).

L'alternativa è non aggiungere o ignorare quei file, come suggerito in questo gitguru article,

git mergetool salva la versione merge-conflitto di file con un suffisso “.orig”.
Assicurarsi di eliminarlo prima di aggiungere e confermare l'unione o aggiungere *.orig al numero .gitignore.

Berik suggerisce in the comments da usare:

find . -name \*.orig 
find . -name \*.orig -delete 

Charles Bailey consiglia nella his answer di essere a conoscenza di impostazioni dello strumento diff interne che potrebbe anche generare i file di backup, non importa quale git impostazioni sono.

  • kdiff3 ha le proprie impostazioni (vedi "Directory merge" nel suo manuale).
  • altri strumenti come WinMerge possono avere il loro estensione di file di backup (WinMerge: .bak, come accennato in its manual).

Quindi è necessario ripristinare anche queste impostazioni.

+6

@Sophistifunk: buon punto. Ho modificato la risposta per utilizzare il segno corretto. – VonC

+5

La modifica delle impostazioni in kdiff stesso ha funzionato per me: Impostazioni> Configura Kdiff3> Directory. Deseleziona la casella "File di backup (.orig)" – kgrote

+0

Grazie per la menzione di WinMerge, questo era il mio problema. –

64

bisogna essere un po 'attenti con l'utilizzo di kdiff3 come mentre git mergetool può essere configurato per salvare un file .orig durante la fusione, il comportamento predefinito per kdiff3 è di salvare anche un file di backup .orig indipendentemente git mergetool.

si deve fare in modo che mergetool di backup è spento:

git config --global mergetool.keepBackup false 

e anche le impostazioni di KDiff3 sono impostate per non creare un backup:

Configure/Options => Directory Merge => Backup Files (*.orig) 
+2

'Configure/Options => Directory Merge => Backup Files (* .orig)' ha davvero aiutato a sbarazzarsi di tutti gli strani protocolli io-slave, klauncher «» sconosciuti e non è stato in grado di creare errori .orig. grazie – Geremia

+1

Perché 'git config --global mergetool.keepBackup false' deve essere impostato? – Geremia

27

Per essere chiari, il comando git corretta is:

git config --global mergetool.keepBackup false 

Entrambe le altre risposte hanno errori di battitura nella riga di comando ciò causerà il fallimento o il mancato funzionamento.

22

Io lo uso per pulire tutti i file che terminano in ".orig":

Se sei un fifone :) si poteva lasciare l'ultima parte fuori solo alla lista di loro (o lasciare fuori il -r se si vuole approvare ogni delete):

function git-show-orig { 
    git status -su | grep -e"\.orig$" | cut -f2 -d" " 
} 
+1

Totalmente utile se vuoi ancora i backup finché non sei pronto per il commit. – Kelly

+3

È anche possibile aggiungere * .orig in .gitignore al livello principale se si mantiene unisci i backup in giro. – Ville

6

Oltre alle risposte corrette offerti come soluzioni a lungo termine, è possibile utilizzare git per rimuovere tutti i file non necessari, una volta per voi con il comando git clean -f ma utilizzare git clean --dry-run prima per garantire niente di non intenzionale capita

Questo ha il vantaggio di utilizzare la funzionalità integrata testata di Git tramite script specifici per il proprio sistema operativo/shell per rimuovere i file.

+3

Sì, ma fai molta attenzione poiché questo comando fa molto di più che rimuovere i file .orig. – kghastie

20

L'opzione per salvare il file .orig può essere disabilitato configurando KDiff3

KDiff3 Backup file .orig option

+1

Questa dovrebbe essere la vera soluzione. – Gondy

+0

Buona idea, grazie Richard – akazemis

+0

Lavora per me. Grazie mille @ richard-pierre – Drew

1
git config --global mergetool.keepBackup false 

Questo dovrebbe funzionare per Beyond Compare (come mergetool) troppo

-2

di Windows:

  1. in file Win/Users/HOME/.gitconfig set mergetool.keepTemporaries=false
  2. nel file git/libexec/git-core/git-mergetool, nella funzione cleanup_temp_files() aggiungere rm -rf -- "$MERGED.orig" all'interno del blocco else.
+1

Vedi la risposta accettata. Questo modifica gli strumenti principali e non è scalabile. – oligofren

2

ho semplicemente utilizzare il comando

git clean -n *.orig 

controllo per assicurarsi che solo file che voglio rimuovere sono elencati poi

git clean -f *.orig 
Problemi correlati