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.