Git, TFS Pull Request-Workflow

Git, TFS Pull Request-Workflow

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:

  1. 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.

  2. 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.)

verwandte Informationen