Entfernt git rm den gesamten Verlauf einer Datei?

Lesezeit: 2 Minuten

Mein Projekt hat eine Datei foo die ich benutzt und überprüft habe git. Ich habe gerade etwas umgestaltet, so dass ich die Datei überhaupt nicht mehr benötige. Wenn ich mache git rm foo, wird die Datei in älteren Commits noch vorhanden sein? Kann ich einen älteren Commit auschecken und mit der Datei arbeiten?

Nein, git rm (plus dem Commit) schreibt einen neuen Baum, der widerspiegelt, dass die Datei nicht mehr vorhanden ist. Der gesamte Verlauf der Datei, einschließlich Erstellung, Änderungen und eventuellem Löschen, ist im Verlauf vorhanden.

  • wie wäre es mit git rm --cached

    – Zach Smith

    16. Mai 2018 um 12:04 Uhr

Nein, git rm entfernt nur die Datei aus dem Arbeitsverzeichnis und fügt diese Entfernung dem Index hinzu. Es sind also nur zukünftige Commits betroffen. Alle vorherigen Commits bleiben gleich und der Verlauf wird tatsächlich angezeigt, wenn Sie die Datei aus dem Repository entfernt haben.

Im Allgemeinen sind alle zuvor vorgenommenen Commits dauerhaft, sodass Sie sich keine Sorgen machen müssen, Commits zu verlieren, sobald sie sich irgendwo im Verlauf befinden. Natürlich gibt es einige Dinge, die frühere Commits entfernen oder ändern können (wie Rebasing), aber bei den meisten Dingen, die Sie tun, sind Sie ziemlich sicher.

  • @PHcoDer Ich (und ich nehme an, Daniel auch) hat auf die Frage im Fragentitel geantwortet. Also, nein, git rm entfernt nicht den gesamten Verlauf.

    – stupsen

    2. September 2016 um 18:38 Uhr

  1. Sie können jede alte Version mit bekannter Commit-ID mit allen dazugehörigen Zuständen auschecken, einschließlich Dateien, die jetzt gelöscht werden. Siehe zB git branch wobei start-point eine Commit-ID ist. Sie sollten nicht einmal verfolgen, dass der Startpunkt zum aktuellen Zweig gehört; Commit-IDs müssen eindeutig sein, damit sie sich in jedem Zweig befinden können, der dem aktuellen Repository bekannt ist.

  2. Sie können den vorherigen Verlauf der Datei mit dem Befehl log überprüfen; aber es funktioniert nicht in irgendeiner Syntax – für 1.7.7 werde ich “git log — oldpath” anstelle von einfach “git log oldpath” ausgeben, da es sonst nicht zwischen Pfad und Revision unterscheiden kann. Für einige andere Befehle als “Schuld” reicht selbst dies nicht aus – man muss die alte Revision auschecken, um sie zu starten.

1146100cookie-checkEntfernt git rm den gesamten Verlauf einer Datei?

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

Privacy policy