Chandler B. schrieb:
Hallo,
Hallo
ich habe eine frage zu Git.
ich habe einen branch(test), in dem ich schon mehrere features gemergt
habe.
...
Das Problem was ich jetzt aber habe, ist das alle commits, welche merges
behinhalten, keine Verbindung mehr zum Feature-Branch haben.
Dies ist ja auch richtig, da sich die hash durch den Rebase geändert
Richtig erkannt. Du hast den hash aber nicht geändert, der alte existiert noch, nur dein master branch zeigt nicht mehr darauf. Du hast einen neuen hash erstellt. Bzw mehrere neue.
Daher die Frage, gibt es eine Möglichkeit, einen Commit zu verändern,
aber alle folgenden verbindungen zu branches zu behalten?
Nein. Du musst auch alle deine Branches auf master rebasen, denn die zeigen ja noch auf den alten hash.
Ich hab aber das Gefühl, dass du nicht aus master den rebase gemacht hast, sondern von test, kann das sein?
Zeig mal bitte den tree, z.B. via gitk --all.
PS, es gibt Gründe, warum man niemals den Hauptentwicklungszweig rebasen sollte, sondern wenn nur die feature branches...
Pilot P. schrieb:
In einem Ein-Mann-Projekt braucht man eigentlich auch keine Branches.
Evtl. nur, wenn man verschiedene Versionen seines Programmes auslieferen
will (z.B. verschiedene Mikrocontroller).
Sehe ich nicht so. Auch in privaten Projekten kann es hochgradig sinnvoll sein, z.B. einen stabilen main branch und einen development branch zu führen. Auch feature branches machen Sinn, du willst ja möglicherweise inkrementelle Änderungen ausprobieren? Und wenn du was ändern willst, machst du das im Feature branch, solange dieser noch nicht rebased ist, sonst hast du die Probleme, die der OP hat ;)
Stattdessen benutze ich für
sowas das Tagging. Das kennt kaum einer, ich sehe alle nur mit Branches
rumeiern und Riesenprobleme verursachen.
Das ist doch Quark... Git tags werden doch genau dafür benutzt, überall... Siehe z.B. https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-tag oder wo auch immer. Release -> Git Tag.