2015-02-02 9 views
8

Wie öffne ich alle gelöschten, modifizierten und erstellten Dateien seit der letzten git commit, versuchte ich zuerst git status, aber es war schwierig zu parsen, so dass ich fand git status --porcelain war leichter zu parsen und mit awk + vim + etwas bash Magie es war einfach zu machen.Wie öffne ich alle modifizierten Dateien mit git?

+2

Was bedeutet es überhaupt, eine gelöschte Datei zu öffnen? – unwind

+0

zB: 'a.rb' wurde gelöscht,' vim a.rb' wird eine leere Datei öffnen, speichern wird eine leere Datei erstellen, nichts tun wird nur nützlich sein, um festzustellen, dass die Datei gelöscht wurde – Dorian

Antwort

10

So fand ich die Lösung mit vim:

vim $(git status --porcelain | awk '{print $2}') 

Und poste ich diese Frage + Antwort einfach, es selbst zu beantworten und an das

+0

Backticks sind veraltet –

+0

@JID [Nö.] (Http://unix.stackexchange.com/a/126928/5381) –

+0

@HolgerJust Sie haben eine Antwort auf diese Stiche zitiert, die nichts wirklich beweist. Aber egal, auch wenn sie nicht veraltet sind, sie sind veraltet und haben absolut keinen Vorteil gegenüber $(), während $() 'viele Vorteile für sie hat. Der einzige Grund, sie jemals zu benutzen, ist die Kompatibilität mit einem alten Bourne Shells. Auch wenn Sie den Top-Kommentar für diesen Beitrag lesen, bin ich der gleichen Meinung. –

4
git ls-files --modified --deleted --others -z | xargs -0 vim 
+1

Ich bekomme Tonnen von Dateien aus 'tmp /', die in meinem '.gitignore' sind. – Dorian

+0

Ich würde' git ls-files -o -m --exclude-standard' vorschlagen, um modifizierte und neue Dateien zu öffnen, aber ausschließen ignoriert. Auch für mich funktioniert die 'xargs' Lösung nicht mit vim (es leitet alle Dateinamen als eine Zeichenkette an vim als neue Datei und blockiert die Terminaleingabe), während' vim $() 'gut funktioniert. – ruuter

2

Von diesen blog Internet gemeinsam nutzen, können Sie kann bearbeiten ~/.gitconfig und fügen Sie diese Zeile hinzu:

[alias] 
    edit = !$EDITOR $(git status --short | awk '$1 ~ /^M|A|U/ {print $2}') 

Jetzt öffnet git edit alle geänderten Dateien

+0

Die Verwendung von '--porcelain' ist wahrscheinlich besser, da die Ausgabe unabhängig von der Konfiguration gleich ist ... – edi9999

+1

@ edi9999' --porcelain' ist nicht relativ zum aktuellen Arbeitsverzeichnis, was ein guter Grund dafür sein kann Verwenden Sie stattdessen '--short'. –

+0

+1 für git alias, aber für Git-Befehl würde ich lieber 'git ls-files -o -m --exclude-standard' verwenden, der auch neue Dateien enthält und keinen awk-Schritt erfordert. – ruuter

4

Damit dies funktioniert, wenn ich in einem Unterordner des Git Repos bin, verwende ich einfach die Option -s, um den Status zu gittieren. Die Vim-Option -O öffnet die Dateien in vertikaler Aufteilung.

vim -O $(git status -s | awk '{print $2}')

+0

Sie möchten das Flag "-p" anstelle von "-O" im Befehl vim verwenden, um sie in den Registerkarten zu öffnen, da Ihr vim-Bildschirm mit Unterteilungen geclustert wird, wenn Sie mehr als 2 geänderte Dateien haben. – betoharres

Verwandte Themen