zurücksetzen - git änderungen verwerfen




Zeigen Sie den Änderungsverlauf einer Datei mithilfe der Git-Versionierung an (14)

SourceTree-Benutzer

Wenn Sie SourceTree verwenden, um Ihr Repository zu visualisieren (es ist kostenlos und ziemlich gut), können Sie mit der rechten Maustaste auf eine Datei klicken und " Ausgewählte protokollieren" auswählen

Die Anzeige (unten) ist viel freundlicher als bei gitk und die meisten anderen Optionen werden aufgelistet. Leider (zu diesem Zeitpunkt) gibt es keine einfache Möglichkeit, diese Ansicht über die Befehlszeile zu starten. Die CLI von SourceTree öffnet gerade Repos.

Wie kann ich die Änderungshistorie einer einzelnen Datei in Git anzeigen und die Details mit den Änderungen vervollständigen?

Ich bin soweit gekommen:

git log -- [filename]

was zeigt mir den Commit-Verlauf der Datei, aber wie komme ich an den Inhalt jeder Dateiänderung?

Ich versuche den Übergang von MS SourceSafe zu machen, und das war früher ein einfacher right-click → Verlauf show history .


Dafür würde ich verwenden:

gitk [filename]

oder um Dateinamen hinter Umbenennungen zu folgen

gitk --follow [filename]

Fügen Sie diesen Alias ​​zu Ihrer .gitconfig hinzu:

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

Und benutze den Befehl wie folgt:

> git lg
> git lg -- filename

Die Ausgabe sieht fast genauso aus wie die Gitk-Ausgabe. Genießen.


Ich habe git-playback für genau diesen Zweck geschrieben

pip install git-playback
git playback [filename]

Dies hat den Vorteil, dass die Ergebnisse in der Befehlszeile gitk (z. B. git log -p ) und Sie die einzelnen Commits mit den Pfeiltasten (z. B. gitk ) gitk .


Mit den hervorragenden Git-Erweiterungen gelangen Sie zu einem Punkt in der Historie, an dem die Datei noch vorhanden war (wenn sie gelöscht wurde, andernfalls gehen Sie einfach zu HEAD), wechseln Sie zur Registerkarte Dateistruktur, klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie File history .

Standardmäßig folgt die Datei den Umbenennungen. Auf der Registerkarte "Beschuldigung" kann der Name bei einer bestimmten Version angezeigt werden.

Es gibt einige kleinere Probleme, wie das Anzeigen fatal: Not a valid object name Werte fatal: Not a valid object name auf der Registerkarte View wenn Sie auf die Löschungsversion klicken, aber ich kann damit leben. :-)


Oder:

gitx -- <path/to/filename>

wenn du gitx


Sie können verwenden

git log -p filename

damit git die patches für jeden protokolleintrag generiert.

Sehen

git help log

Für mehr Optionen - es kann tatsächlich eine Menge schöner Dinge tun :) Um nur den Unterschied für ein bestimmtes Commit zu bekommen, können Sie das tun

git show HEAD 

oder jede andere Revision nach Kennung. Oder verwenden

gitk

um die Änderungen visuell zu durchsuchen.


So zeigen Sie an, welche Revision und Autor zuletzt jede Zeile einer Datei geändert haben:

git blame filename

oder wenn Sie die mächtige Schuld-GUI verwenden wollen:

git gui blame filename

Wenn Sie TortoiseGit verwenden, sollten Sie mit der rechten Maustaste auf die Datei klicken und TortoiseGit --> Show Log . Stellen Sie in dem sich öffnenden Fenster Folgendes sicher:

  • Die Option " Show Whole Project anzeigen" ist nicht aktiviert.

  • Die Option " All Branches " ist aktiviert.


Wenn Sie den gesamten Verlauf einer Datei anzeigen möchten, einschließlich aller anderen Zweige, verwenden Sie:

gitk --all <filename>

Wenn Sie lieber textbasiert bleiben möchten, können Sie tig .

Schnellinstallation:

  • apt-get : # apt-get install tig
  • Homebrew (OS X) : $ brew install tig

Verwenden Sie es, um den Verlauf einer einzelnen Datei anzuzeigen: tig [filename]
Oder durchsuchen Sie den detaillierten Repo-Verlauf: tig

Ähnlich wie gitk aber textbasiert. Unterstützt Farben im Terminal!


Zusammenfassung der anderen Antworten, nachdem Sie sie durchgelesen und ein bisschen gespielt haben:

Der übliche Befehlszeilenbefehl wäre

git log --follow --all -p dir/file.c

Sie können aber auch entweder gitk (gui) oder tig (text-ui) verwenden, um die Lesbarkeit durch den Benutzer deutlich zu verbessern.

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

Unter debian / ubuntu ist der Installationsbefehl für diese schönen Tools wie erwartet:

sudo apt-get install gitk tig

Und ich verwende derzeit:

alias gdf='gitk --follow --all -p'

so dass ich einfach gdf dir , um eine fokussierte Geschichte von allem im Unterverzeichnis dir .


git diff -U <filename> gibt Ihnen einen einheitlichen Diff.

Es sollte rot und grün gefärbt sein. Wenn dies nicht der git config color.ui auto , führen Sie zuerst git config color.ui auto .


git log --follow -p -- file

Dadurch wird der gesamte Verlauf der Datei angezeigt (einschließlich des Verlaufs, der über die Umbenennung hinausgeht, und für jede Änderung Unterschiede).

Wenn also die Datei mit dem Namen " bar einmal " foo , zeigt git log -p bar (ohne die Option --follow ) den --follow der Datei nur bis zu dem Punkt an, an dem sie umbenannt wurde Dateigeschichte, als es als foo . Bei Verwendung von git log --follow -p bar wird der gesamte Verlauf der Datei git log --follow -p bar , einschließlich aller Änderungen an der Datei, wenn diese als foo . Die Option -p stellt sicher, dass für jede Änderung Unterschiede enthalten sind.





git-log