590 Stimmen

Git mergetool erzeugt unerwünschte .orig-Dateien

Wenn ich eine Merge-Konfliktlösung mit Kdiff3 (und anderen Merge-Tools, die ich ausprobiert habe) durchführe, stelle ich fest, dass bei der Auflösung ein *.orig Datei erstellt wird. Gibt es eine Möglichkeit, diese zusätzliche Datei nicht zu erstellen?

924voto

VonC Punkte 1117238

Eine mögliche Lösung von git config :

git config --global mergetool.keepBackup false

Nach dem Zusammenführen kann die Originaldatei mit Konfliktmarkierungen als Datei mit einer .orig Erweiterung.
Wenn diese Variable auf false dann bleibt diese Datei nicht erhalten.
Standardmäßig wird true (d.h. die Sicherungsdateien behalten).

Die Alternative wäre, diese Dateien nicht hinzuzufügen oder zu ignorieren, wie in diesem Artikel vorgeschlagen Gitguru-Artikel ,

git mergetool speichert die konfliktbehaftete Version der Datei mit einem " .orig Suffix ".
Stellen Sie sicher, dass Sie es vor dem Hinzufügen und Bestätigen der Zusammenführung löschen oder hinzufügen *.orig zu Ihrem .gitignore .

Berik schlägt vor in den Kommentaren zu verwenden:

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

Charles Bailey berät in seine Antwort zu beachten Interne Diff-Werkzeugeinstellungen die auch diese Sicherungsdateien erzeugen kann, unabhängig von den Git-Einstellungen.

  • kdiff3 hat seine eigenen Einstellungen (siehe " Verzeichnis zusammenführen " in seinem Handbuch).
  • andere Tools wie WinMerge können ihre eigene Backup-Dateierweiterung haben (WinMerge: .bak wie erwähnt in sein Handbuch ).

Sie müssen also auch diese Einstellungen zurücksetzen.

95voto

CB Bailey Punkte 693084

Sie müssen ein wenig vorsichtig sein bei der Verwendung von kdiff3 als während git mergetool kann so konfiguriert werden, dass ein .orig Datei während des Zusammenführens, das Standardverhalten für kdiff3 ist auch die Speicherung eines .orig Sicherungsdatei unabhängig von git mergetool .

Sie müssen dafür sorgen, dass mergetool Die Sicherung ist ausgeschaltet:

git config --global mergetool.keepBackup false

und auch, dass die Einstellungen von kdiff3 so eingestellt sind, dass keine Sicherungskopie erstellt wird:

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

43voto

xx1xx Punkte 1734

Die Option zum Speichern der .orig-Datei kann durch Konfiguration von KDiff3 deaktiviert werden

KDiff3 Backup file .orig option

41voto

John Punkte 27798

Um das klarzustellen, der korrekte Git-Befehl lautet:

git config --global mergetool.keepBackup false

Die beiden anderen Antworten enthalten Tippfehler in der Befehlszeile, die dazu führen, dass das Programm nicht oder nicht richtig funktioniert.

25voto

kghastie Punkte 689

Ich verwende diese Funktion, um alle Dateien zu bereinigen, die auf ".orig" enden:

function git-clean-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}

Wenn Sie ein Angsthase sind :), können Sie den letzten Teil weglassen, um sie aufzulisten (oder Sie lassen das -r wenn Sie jede Löschung genehmigen wollen):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X