git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

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

git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 20.04.2022 16:52:04

Ich brauche mal euren Rat bzw. einen Einblick, wie ihr das löst.
Die Fehlermeldung kann ich zwar umgehen, jedoch deutet sie darauf hin, dass ich in meinem Workflow etwas grundsätzlich falsch mache.

Ich habe einen main und develop branch. Jedes neue Feature oder Bugfix mache ich in einem dritten Branch (feature), in dem die commits sehr klein sein können, die commit messages lazy sind usw.
Wenn das Feature fertig ist, möchte ich es als einzelnen Commit in develop aufnehmen, mit einer ordentlichen Commit-Message. Die commits in feature und der gesamte feature werden gelöscht.

Code: Alles auswählen

git checkout develop
git merge --squash feature
git commit -am 'super feature'
git branch -d feature
Am Ende kommt die Meldung
Der Branch 'feature' ist nicht vollständig zusammengeführt. Wenn Sie sicher sind diesen Branch zu entfernen, führen Sie 'git branch -D feature' aus.
Mit dem großen -D geht es dann auch. Ich verstehe sogar einigermaßen, warum die Meldung auftaucht. Git weiß ja nicht, dass der letzte Commit in develop die commits aus feature "enthält". Aus Gits Perspektive schmeiße ich feature vollständig in die Tonne, ohne ein "Backup" zu haben.

Nur weiß ich nicht, ob das so OK ist, oder ob es eine elegantere Lösung gibt.

Ziel ist
  • feature ist nur lokal vorhanden
  • feature darf als Branch mit seinen commits remote/origin nicht in der History auftauchen
  • Was ich in feature gemacht habe, soll remote nur in develop als einzelner Commit auftauchen
Es geht also darum, die History von Kleinkram frei zu halten.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von JTH » 20.04.2022 16:58:13

Vertausch deine letzten beiden Schritte, dann kommt der Hinweis nicht – denke ich zumindest, benutze git merge mit --squash seltenst. Ohne wäre das zumindest so.. Das git commit mit --amend sorgt jedenfalls sicher dafür, dass git denkt, der Branch wurde noch nicht gemergt, denn damit schmeißt du alle Commit-Hashes aus dem Feature-Branch weg. Das die Änderungen danach trotzdem in beiden Branches vorhanden sind, ist in dem Moment egal.
Manchmal bekannt als Just (another) Terminal Hacker.

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 20.04.2022 17:06:50

JTH hat geschrieben: ↑ zum Beitrag ↑
20.04.2022 16:58:13
Das git commit mit --amend sorgt jedenfalls sicher dafür
Da ist kein --amend in meinem Beispiel, sondern ein -am, also -a plus -m.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von JTH » 20.04.2022 17:14:10

Ah, richtig, das -a ist ja kurz für --all, nicht --amend. Ups.

Aber wo ich grad mal nachgelesen hab, was --squash hinter merge macht (benutze ich anscheinend nicht nur selten, sondern nie :D): Auf dem Weg merge --squash + commit enthält dein Zielbranch am Ende wie schon geschrieben keinen Commit des Featurebranches, deshalb die Meldung von git. Auf die tatsächlichen Änderungen kommt es, wie geschrieben, hier nicht an.
Manchmal bekannt als Just (another) Terminal Hacker.

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 20.04.2022 17:17:36

JTH hat geschrieben: ↑ zum Beitrag ↑
20.04.2022 17:14:10
enthält dein Zielbranch am Ende wie schon geschrieben keinen Commit des Featurebranches, deshalb die Meldung von git. Auf die tatsächlichen Änderungen kommt es, wie geschrieben, hier nicht an.
Das habe ich schon verstanden.

Aber diese Fehlermeldung und z.B. auch die Tatsache, dass du das scheinbar nie genutzt hast, lässt mich vermuten, dass ich hier einen relativ "exotischen" Weg beschreite und es vermutlich auch einfacher geht.

Über das Zusammenspiel der verschiedenen Branch-Arten gibt es ja diverse Texte und auch Stilrichtungen. Das hab ich gelesen und mir diese einfache Variante herausgesucht, weil ich auf absehbare Zeit der einzige Entwickler am Repo sein werde. Nur wie das technisch umgesetzt wird, war in den Texten scheinbar nicht so genau beschrieben, oder wurde von mir mißverstanden.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von schorsch_76 » 20.04.2022 21:00:46

Ja, einfach feature nach develop mergen ohne Squash.

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 20.04.2022 22:26:19

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
20.04.2022 21:00:46
Ja, einfach feature nach develop mergen ohne Squash.
Aber dann bleiben doch die vielen dirty commits aus feature erhalten. Genau das will ich ja nicht. Ich möchte die commits und messages aus feature nicht in develop sehen.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von schorsch_76 » 21.04.2022 13:15:19


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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 21.04.2022 13:19:41

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
21.04.2022 13:15:19
https://levelup.gitconnected.com/do-you ... 96c1191fd5
Das sollte es dir erklären :)
Täusche ich mich, oder ist das genau das Vorgehen, dass ich selbst beschrieben habe.

Nur das Löschen des Feature branches erklärt er nicht. Und hier taucht die besagte Fehlermeldung/Warnung auf.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von schorsch_76 » 21.04.2022 13:41:40

Da hast du recht. Du kannst ja noch einen diff zum feature branch machen dann siehst du ob alles gemergt ist und der branch gelöscht werden kann ;)

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von buhtz » 22.04.2022 09:31:09

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
21.04.2022 13:41:40
Da hast du recht. Du kannst ja noch einen diff zum feature branch machen dann siehst du ob alles gemergt ist und der branch gelöscht werden kann ;)
Tut mir Leid, ich habe mich unklar ausgedrückt.

Es geht nicht darum, sicher zu sein, ob alles gemergt wurde.

Es geht darum einen Workflow ohne Warnung und Fehlermeldung zu haben. Ziel ist es einen Feature branch als einzigen commit zu mergen und ihn danach rückstandlos zu entfernen. Der Vorgang selbst ist ja nicht unüblich.
Ich gehe jedoch davon aus, dass erfahrene Entwickler und Git user das technisch anders umsetzen. Oder haben die auch immer diese Fehlermeldung?
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

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

Re: git: "nicht vollständig zusammengeführt" beim Löschen von feature branch

Beitrag von schorsch_76 » 22.04.2022 12:19:17

Wenn ich sowas machen muss, erzeuge ich einen diff bis zum Punkt an dem der Branch gestartet wurde, erzeuge einen neuen Branch von dort, lass den Patch dort rein und erzeuge einen neuen Commit mit anschließendem normalen Merge. Danach hab ich den neuen Branch komplett gemergt und den unsauberen Branch als Backup wen was schief geht. Am Ende können beide Branches weg.

Aber meistens sind meine Commits sauber und ich behalte die gesamte Geschichte. Das mit dem diff nutze ich nur wenn WIP Commits enthalten sind.

Antworten