[Git] Löschen von commits ohne Branch

ete

Cadet 4th Year
Registriert
Jan. 2011
Beiträge
89
Hallo zusammen!

Ich habe einige ältere Branches in meinem Git-Repository gelöscht. Die Commits dazu existieren aber (natürlich) immer noch. Ich habe jetzt folgendes Problem. Die Branches, die ich gelöscht habe, sind schon einige Jahre alt. Ich habe in den Commits damals auf Redmine Tickets referenziert. Mittlerweile nutze ich wieder ein (neues) Redmine System mit den aktuellen Branches. Ich habe jetzt allerdings dass Problem, dass bei neu erstellten Redmine Tickets die Commits von vor einigen Jahren zugeordnet werden, weil Redmine ja immer mit der Ticketnummer 1 anfängt. Es gab also damals z.B. ein Ticket #13. Im heutigen Ticket #13 werden mir nun die Commits von vor einigen Jahren angezeigt, weil die Ticketnummer ja übereinstimmt.
Der Branch von damals existiert nicht mehr. Daher würde ich die zugehörigen Commits gern löschen. Dann tauchen sie auch nicht mehr bei den falschen Redmine Tickets auf.
Ich hoffe, ich habe mein Problem verständlich erklärt. Kennt jemand einen Git Befehl, um Commits ohne existierenden Branch zu löschen?

Vielen Dank!
 
Mit
weil die Ticketnummer ja übereinstimmt
meinst du, denke ich, dass du in den besagten, älteren und branch-losen commits eine referenz auf eine Ticketnummer in den commit messages gesetzt hat, die jetzt nicht mehr zu diesem commit gehört, richtig?

Vielleicht kommst du so drauf: Welche Mechanismen kennt Git, um zwischen erreichbaren und unerreichbaren Commits zu unterscheiden?
 
Das hast du richtig verstanden. Die Referenz zu Ticket #13 meint des entsprechende Ticket im alten Redmine. Im neuen gibt es wieder ein Ticket #13 und hier wird jetzt der alte Commit angezeigt.
Ich habe bis jetzt z.B. git gc und git fsck mit einigen Optionen versucht. Funktioniert hat es aber leider nicht.
 
Die alten Commits sind nicht branchlos, sonst würdest du sie nicht mehr sehen. Wahrscheinlich wurden die alten, jetzt gelöschten Branches irgendwann gemergt. Dadurch sind die Commits jetzt Teil deiner aktuellen Branches. Kannst du leicht nachprüfen:

Code:
git branch --contains <commit>
 
Es kann natürlich sein, dass es da mal einen merge gab. Guter Hinweis, vielen Dank!
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben