Zur nächsten geänderten Datei in Git Diff springen?

Lesezeit: 4 Minuten

Ich habe den Fehler gemacht, ein Visual Studio-Projekt von 2008 auf 2010 zu aktualisieren, ohne zuerst meine vorherigen Änderungen einzuchecken. Aus diesem Grund habe ich eine riesige systemgenerierte Datei (über 10.000 Zeilen), in der jede vierte Zeile geändert wurde.

Ich bin normalerweise ziemlich gut darin, Dinge oft einzuchecken, also benutze ich normalerweise nur die Abwärtstaste, um durch meine Änderungen zu blättern. In diesem Fall dauert es mehrere Lebenszeiten, um durch die Änderungen an der vom System generierten Datei zu scrollen.

Gibt es eine Möglichkeit, zur nächsten geänderten Datei zu springen, nachdem Sie a git diff damit Sie nicht jede Änderung an jeder Datei durchblättern müssen?

  • kannst du einfach verwenden git diff fileName wenn Sie ein kleines Änderungsset haben.

    – zbrunson

    19. November 2012 um 23:58 Uhr

  • Ich möchte alle Dateien sehen, die geändert wurden, überspringen Sie einfach die riesige …

    – Abe Miessler

    19. November 2012 um 23:59 Uhr

Standardmäßig, git diff leitet seine Ausgabe durch less. Sie können also die verwenden less Befehle, um nach dem nächsten Header zu suchen. Typ /^diff und drücke Eintreten um zur nächsten Datei zu springen.

  • Muss ich zuerst mein aktuelles Diff verlassen? Ich habe versucht, es von meinem aktuellen Diff aus zu tun, und es sagte Pattern not found

    – Abe Miessler

    20. November 2012 um 0:02 Uhr

  • Das / Befehl sucht von der aktuellen Position aus, die Sie gerade betrachten. Wenn Sie also diese Meldung erhalten, gibt es keine weiteren Zeilen, die mit beginnen diff in der Ausgabe.

    – Greg Hewgill

    20. November 2012 um 0:03 Uhr

  • Eigentlich klingt es wie das, was Sie Ja wirklich Was Sie tun möchten, ist, diese (nicht festgeschriebenen) Änderungen in zwei separate Festschreibungen aufzuteilen. Mach ein git add large.file.name und dann git commitdann sind alle verbleibenden Änderungen die anderen Dateien, die sind nicht der große.

    – Greg Hewgill

    20. November 2012 um 0:05 Uhr

  • Danach verwenden n um zum nächsten Vorkommen von zu gelangen ^diffund N für das vorherige. Dies sollte funktionieren, bis Sie ein anderes Suchmuster verwenden /.

    – Gauthier

    1. Juni 2017 um 11:14 Uhr

  • du hast mir viel Zeit gespart. Gesundheit

    – Rückfall

    1. Mai 2020 um 20:38 Uhr

Benutzer-Avatar
Schmied

Während in git diffeinfach zuschlagen n um direkt zur nächsten Datei zu gehen, und wieder zur nächsten, und so weiter.

Sie können auch verwenden N um eine Datei zurückzugehen.

(Damit diese Befehle funktionieren, müssen Sie zuerst eingeben /^diff und drücke Eintretenwie in dieser Antwort erläutert.)

  • Drücken n findet den nächsten Suchbegriff. Sie müssen nach einem gemeinsamen Teil des Dateiheaders suchen, damit dies funktioniert.

    – Aaron Schwan

    14. Juli 2018 um 20:48 Uhr

Für andere nützliche Befehle geben Sie ein h um Hilfe (während in git diffdie drin ist less).

Im Speziellen:

                                                      SPRINGEN g < ESC-< * Gehe zur ersten Zeile in der Datei (oder Zeile N).  G > ESC-> * Gehe zur letzten Zeile in der Datei (oder Zeile N).  p % * Gehe zum Anfang der Datei (oder N Prozent in die Datei).  t * Gehe zum (N-ten) nächsten Tag.  T * Gehe zum (N-ten) vorherigen Tag.  { (  [           *  Find close bracket } ) ].  } ) ]* Offene Klammer finden { ( [.
  ESC-^F <c1> <c2>  *  Find close bracket <c2>.
  ESC-^B <c1> <c2>  *  Find open bracket <c1>

user avatar
mgarciaisaia

I’d suggest you to use tig. It’s a curses interface for git, and a very good one.

With tig status you can see the index status, and by pressing Enter on any of the files, you see it’s diff. h shows you the help menu, but it’s a vi-shortcuts-based interface.

I think in any debian-based distro you can just apt-get install it, or you can make it from the linked site.

Another option is to call update-index command and tell it to pretend that one giant file didn’t change. There’s a more complete example here.

user avatar
Arthur

I think you want:

:n                *  Examine the (N-th) next file from the command line.

See this in the help for less.

                      CHANGING FILES
:e [file]            Untersuchen Sie eine neue Datei.  ^X^V Gleich wie :e.  :n * Untersuchen Sie die (N-te) nächste Datei von der Befehlszeile aus.  :p * Untersuchen Sie die (N-te) vorherige Datei von der Befehlszeile aus.  :x * Untersuchen Sie die erste (oder N-te) Datei von der Befehlszeile aus.  :d Löschen Sie die aktuelle Datei aus der Befehlszeilenliste.  = ^G :f Gibt den aktuellen Dateinamen aus.

1299340cookie-checkZur nächsten geänderten Datei in Git Diff springen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy