[gelöst] Git: Umgang mit spontanem Bugfix

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

[gelöst] Git: Umgang mit spontanem Bugfix

Beitrag von buhtz » 04.03.2019 14:46:29

Ich stosse beim Entwickeln immer wieder auf ein Szenario, für das ich mit Debiangit keine Lösung kenne. Vielleicht könnt ihr mich in die richtige Richtung stoßen, oder habt sogar Vorschläge, wie man die Situation an sich von vornherein vermeiden könnte.

Ich nutze Debiangit schon einige Zeit, aber nur lokal, alleine und rudimentär. Selbst branch nutze ich nicht, obwoh ich weiß, wie man damit umgehen müsste. Soviel zu meinem Stand. ;)
Da ich mein aktuelles Projekt demnächst auch publiziere (vorrausschichtlich auf Codeberg ehm. TeaHub), möchte ich als Maintainer dann natürlich auch besser mit git und zusätzlichen Entwickeln umgehen können.

Ich versuche meine Commits atomar zu halten. Ich implementiere ein neues Feature (im kleinsten Sinne!) in einem Commit. Während dessen entdecke ich aber hin und wieder einen Bug. Das Feature kann nur fertig implementiert werden wenn ich vorher den Bug fixe. Der Bugfix ist aber eigentlich atomar zu behandeln und müsste in einem eigenen commit geschehen.
Mangels Wissen, mache ich dann doch beides in einem commit fertig - fixe also den bug und implementiere dann das Feature fertig.

Ich habe also bereits nicht-commitede Änderungen (Nennt man das staging? Oder was wäre der Fachausdruck dafür?). Wie kann ich den Bug fixen, ohne die Änderungen (die ja zum Feature gehören) zu verlieren?

Der Einfachheit kann dazu angenommen werden:
  • Feature und Bug befindet sich in ein und der selben Datei.
  • Der Bugfix besteht nur aus dem Ändern einer einzigen Zeile, die nicht mit dem Feature conflicted.
PS: Übrigens für blutige git-Anfänger fand ich das hier sehr hiflreich. https://learngitbranching.js.org/
Zuletzt geändert von buhtz am 28.08.2019 07:26:17, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Git: Umgang mit spontanem Bugfix

Beitrag von Lord_Carlos » 04.03.2019 15:08:51

Ich habe bei mir fuer jeden bug und jeden Feature ein Branch local bei mir auf dem Rechner. Das macht meine IDE sogar fast automatisch. So kann man zwischen verschiedenen bugs und feature wechseln ohne code zu verlieren.

Du musst die neuen Branches ja nicht auf TeaHub pushen.

z.B.
Neuen branch "feature_XYZ" erstellen von master
codes etwas, bemerkst ein bug.
Commitest was du bis jetzt hast auf "feature_XYZ"
Neuen branch "Bug_3" von master
loest fehler, commitest und mergest "Bug_3" in Master rein.
Wechselst zu "feature_XYZ", mergest "master" in den feature branch.
codest weiter und commitest auf "feature_XYZ"
"feature_XYZ" in "master" mergen

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Git: Umgang mit spontanem Bugfix

Beitrag von schorsch_76 » 04.03.2019 15:12:27

https://nvie.com/posts/a-successful-git ... ing-model/

:) So mach ich das Privat und im Beruf. Da gibt es keine Probleme! Ok, ich spare mir den Release Branch.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Git: Umgang mit spontanem Bugfix

Beitrag von Meillo » 04.03.2019 15:36:10

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
04.03.2019 15:08:51
Wechselst zu "feature_XYZ", mergest "master" in den feature branch.
Muesste (oder koennte) das nicht ein Rebase von ``feature_XYZ'' auf ``master'' sein? ... Oder ist das eine Praeferenzfrage?


Statt vor dem Wechsel auf ``Bug_3'' zu committen koenntest du den Arbeitsstand auch stashen. Oder du squashst die zwei inhaltlich ``halben'' Commits am Ende zu einem, damit du wieder Commits hast, die jeweils eine in sich abgeschlossene inhaltliche Aenderung enthalten.
Use ed once in a while!

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Git: Umgang mit spontanem Bugfix

Beitrag von Lord_Carlos » 04.03.2019 15:45:42

Meillo hat geschrieben: ↑ zum Beitrag ↑
04.03.2019 15:36:10
Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
04.03.2019 15:08:51
Wechselst zu "feature_XYZ", mergest "master" in den feature branch.
Muesste (oder koennte) das nicht ein Rebase von ``feature_XYZ'' auf ``master'' sein? ... Oder ist das eine Praeferenzfrage?
Kann gut sein. Ich habe rebase noch nicht benutzt.

Muss zugeben das ich das bei mir leicht anders mache. Ich pushe meine feature / bug branches zu einem remote repo <mein_name/bug-feature>. Von da wird ein pull request an <upstream/master> gesendet und dann ggf gemerged.
Immer mal wieder merge ich upstream/master in mein lokalen bug/feature branch wenn ich laenger an etwas arbeite und code von anderen mit haben will. Ich glaube nicht das man rebase machen muss. Benutzte aber auch Intellij IDEA und bitbucket, da wird mir viel Handarbeit abgenommen.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Git: Umgang mit spontanem Bugfix

Beitrag von buhtz » 04.03.2019 17:09:55

Uijuijui. Git - 100 Wege. Stash klingt interessant. Ich werde mich mal reinknobeln. Dank euch für die Hilfe.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten