Hier ist der Workflow, den ich ausprobiert habe, nachdem ich mir das angesehen habe.Git/TFS-Video.
Also erstelle ich einen Zweig aus meinem Entwicklungszweig
$ git checkout -b my-feature-branch development
Dann nehme ich eine Änderung vor, bereite sie vor, übernehme sie und übertrage sie auf den TFS-Server.
Wenn ich jetzt zur TFS-Weboberfläche gehe, habe ich einen „My-Feature-Branch“ auf dem Server.
Ich klicke auf „Neuer Pull Request“, erstelle einen PR in der Entwicklung und akzeptiere diesen PR. Dieser Vorgang löscht den „my-feature-branch“ auf dem TFS-Server, er bleibt jedoch auf meinem lokalen Computer erhalten.
Im Moment ist alles großartig.
Zurück zu meinem lokalen Rechner, aus dem Feature-Zweig wechseln:
git checkout development
Löschen des lokalen Zweigs
git branch -d my-feature-branch
warning: deleting branch 'my-feature-branch' that has been merged to
'refs/remotes/origin/test-pr', but not yet merged to HEAD. Deleted branch my-feature-branch (was d525adc).
Bekomme das neuste -
git pull -p
Manchmal schlägt das Löschen fehl und ich muss das Löschen erzwingen, auch wenn ich den Pull vor dem Löschen ausführe.
git branch -D my-feature-branch
Ist mein Workflow falsch? Sollte ich vor dem Löschen eine Art Zusammenführung durchführen? Warum erkennt Git nicht, dass der Feature-Branch nach dem Pull als Pull Request zusammengeführt wurde, und lässt mich ohne Fehler löschen?
Antwort1
Warum erkennt Git nach dem Pull nicht, dass der Feature-Branch als Pull Request zusammengeführt wurde, und lässt mich ihn ohne Fehler löschen?
Das lässt sich anhand der von Ihnen bereitgestellten Informationen nur schwer sagen, aber hier sind zwei Vermutungen:
Sind Sie sicher, dass Sie vor dem Löschen des lokalen Feature-Zweigs pullen? Wenn nicht, enthält der Hauptzweig natürlich nicht die neuen Commits.
Wie fügst du den Feature-Branch ein? Mit einem regulären Merge oder einem Squash-Merge? Ein regulärer Merge integriert die Commits des Feature-Branchs in den Haupt-Branch, damit Git weiß, dass alles da ist. Ein Squash-Merge hingegen integriert alleInhaltaus dem Feature-Branch, tut dies jedoch durch die Erstellung eines neuen Commits, und Git verfolgt nicht die Tatsache, dass das neue gequetschte Commit aus den Commits des Feature-Branch generiert wurde, und denkt daher nicht, dass der Feature-Branch zusammengeführt wurde.
(Ich empfehle dringendnichtdurch Squash-Merges. Das Beibehalten der ursprünglichen Commits, wie es bei einem Standard-Merge der Fall ist, trägt dazu bei, dass Git besser funktioniert.)