Einige Möglichkeiten, wie .orig-Dateien während des Zusammenführens in meinem Git-Repository überprüft werden, werden jetzt im geänderten und nicht verfolgten Sektor angezeigt. Aber ich möchte diese Dateien nicht mehr in meinem Repository haben. Wie geht das.
modified: Gemfile.lock.orig
# modified: Gemfile.orig
# modified: app/assets/images/bg_required.png.orig
# modified: app/assets/javascripts/application.js.orig
etc...
Jede Hilfe wird geschätzt.
Antworten:
Die beste Lösung in diesem Fall ist es, es einfach zu halten und diese Dateien unabhängig von Git zu entfernen:
Alternativ können Sie in Windows / PowerShell den folgenden Befehl ausführen
quelle
git clean -df
es nicht tut. Warum sollten wir den zurückgelassenen Müll manuell beseitigen müssen?Probieren Sie
git clean
weitere Informationen finden Sie hier oder hierquelle
git rm <filename>
und dann festschreiben. Danach fügen Sie die * .orig-Datei in git ignore hinzu.git clean -i
ist wirklich nett. Sie erhalten eine Liste der Dateien, die gelöscht werden sollen, sowie Optionen zum Umgang mit der Liste (Filtern der Liste, Löschen aller Elemente in der Liste und einige andere Optionen).git clean -f -e '*.*' -e '!*.orig'
Es gibt nur ein Ausschlussmuster, aber es unterstützt ein wenig negative Muster. So können wir alle Dateien ausschließen*.*
und dann den Ausschluss nur der*.orig
Dateien negieren .du kannst tun:
Weitere Informationen finden Sie unter Git mergetool generiert unerwünschte .orig-Dateien
quelle
Sie können Dateien mit .gitignore ignorieren
Fügen Sie einfach * .orig wie hier gezeigt in die Liste ein
https://help.github.com/articles/ignoring-files
Zum Löschen aktueller Dateien können Sie ein Shell-Skript erstellen und wie unten beschrieben aus dem Projektordner ausführen
quelle
Funktioniert leider
git clean
nicht für mich, da ich*.orig
meine globale Gitignore-Datei hinzugefügt habe, sodass sie auch von Clean ignoriert werden. Selbst das Ausführengit clean -x
ist nicht gut, da ich nicht möchte, dass alle meine ignorierten Dateien gelöscht werden.git clean -i
ist hilfreich, aber ich möchte wirklich nicht jede einzelne Datei überprüfen müssen.Wir können jedoch ein Ausschlussmuster verwenden und die Übereinstimmung negieren. Vorschau mit diesem Befehl:
Wenn Sie sicher sind, übergeben Sie die
force
Flagge, um sie wirklich zu löschen:Basierend auf Leorleors Kommentar
quelle
git rm Gemfile.lock.orig
und den Rest der Dateien, die Sie nicht benötigen.git commit --amend
Um diese Blobs vollständig zu entfernen,
git gc --prune=0 --aggressive
quelle
Für mich
git clean -f
wurden alle * .oig-Dateien entfernt. Und behält die, die schon vorher da waren.So sah es nach der Fusion (fast) aus:
.idea/codeStyles/
war schon vor dem Zusammenführen als nicht verfolgte Datei da..idea/misc.xml.orig
(und vieles mehr) mussten entfernt werden.=> Verwenden von
git clean -f
:führte zu:
quelle
Sie können einfach tun
git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm
TL; DR;
git status -s
ermöglicht es Ihnen, alle geänderten / fehlenden Dateien in Bezug auf den Index abzurufengrep "\.orig$"
Filtern Sie Dateien heraus und behalten Sie das Ende mit ".orig" bei.awk '{print $2}'
listet den Dateinamen auf (Überspringen von Git-Informationen, z. B. A, M, ??)xargs -n1 -r echo rm
druckt Entfernungsbefehle für alle Argumente (-n1: einzeln und -r: überspringen, wenn leer). Kopieren Sie einfach die Befehle und fügen Sie sie ein. Überprüfen Sie dabei, ob Dateien entfernt werden sollen.quelle
git rm <file>
http://git-scm.com/docs/git-rm
Fügen Sie Ihrer .gitignore-Datei auch Dateien / Verzeichnisse hinzu, die Sie ignorieren möchten.
quelle
git rm <file> <file>
Listen Sie sie einfach auf.git rm
Verwenden Sierm
stattdessen stattdessen