Anwenden von Änderungen durch einen Rebase

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS-2018 | TFS-2017 | TFS-2015 | VS 2017 | VS 2015

Eine der vor-und Nachteile aus dem Workflow der git-Funktions Verzweigung besteht darin, dass Sie den Versions Kontroll Verlauf nicht aktiv verwalten. Git erstellt diesen Verlauf, wenn Sie Ihren Code in Ihren Commits speichern und Änderungen mit Pull Requestswieder in der Main-Verzweigung zusammengeführt.
Dieser generierte Verlauf kann kompliziert werden, wenn Sie eine featureverzweigung mit Änderungen aus der Main-Verzweigung aktualisieren müssen, um die von anderen Benutzern committete Arbeit zu erfassen. Ihr commitverlauf weicht von der Main-Verzweigung an mehreren Punkten ab, sodass Sie schwer zu befolgen ist.

Verwenden rebase Sie, um das Problem der Aktualisierung Ihrer Verzweigung mit den neuesten Änderungen aus der Main-Verzweigung zu beheben. Rebase nimmt die Änderungen an den Commits in der aktuellen Verzweigung vor und gibt Sie im Verlauf einer anderen Verzweigung wieder. Der commitverlauf Ihrer aktuellen Verzweigung wird so umgeschrieben, dass er mit dem letzten Commit im zielbranch der REBASE beginnt. Wenn Sie Ihre Änderungen in der featureverzweigung auf die neuesten Änderungen in der Main-Verzweigung zurücksetzen, können Sie Ihre Änderungen an der neuesten Version in der Main-Verzweigung testen, während Sie einen sauberen git-Verlauf beibehalten.

In diesem Tutorial lernen Sie Folgendes:

  • Erzwingen von Push zum Aktualisieren Ihres remotebranch
  • Squash-lokale Commits

Videoübersicht

Vorsicht verwenden

Die Neuzuordnung ist ein leistungsfähiges Tool zum Erfassen von Änderungen an einem hauptbranch, aber Sie müssen vorsichtig sein, um die Verwendung zu unterstützen. Beachten Sie vor dem rebase Folgendes:

  1. REBASE-Commits, die per Pushvorgang für andere Benutzer freigegeben wurden. Die einzige Ausnahme von dieser Regel ist, wenn Sie sicher sind, dass niemand in Ihrem Team die Commits oder den von ihnen übertragenen Branch verwendet.
  2. Verwenden Sie rebase, um die Commits für eine andere Verzweigung zu erfassen, während Sie mit einer lokalen featureverzweigung arbeiten. Dies ist besonders nützlich, wenn Sie in Funktions Verzweigungen mit langer Laufzeit arbeiten, um zu prüfen, wie Ihre Änderungen mit den neuesten Updates in der Main-Verzweigung funktionieren.
  3. Sie können eine veröffentlichte Verzweigung mit einem nicht aktualisieren, push nachdem Sie den lokalen Branch neu erstellt haben. Sie müssen die Übertragung der Verzweigung erzwingen, um den Verlauf der Remote Verzweigung so umzuschreiben, dass Sie dem lokalen Verlauf entspricht. Erzwingen Sie niemals, dass pushbranches von anderen Personen verwendet werden.

Während einer rebase versucht git, die Änderungen, die in den Commits für Ihren Branch aufgezeichnet wurden, und die Änderungen in den Commits in der Zielverzweigung abzugleichen. Lösen Sie alle Konflikte zwischen den Commits auf die gleiche Weise, wie Sie Mergekonflikteauflösen.

Wann muss oder Merge neu erstellt werden?

rebaseDie Verwendung von anstelle von Verzweigungen führt zu einer einfacheren Durchführung, aber weniger exakten Commits. Ihr Team sollte den Bedingungen der rebase Verzweigung zustimmen. Sie sollten Verzweigungen immer noch über eine Pull Requestin der Main-Verzweigung zusammenführen. Ein empfohlenes Verfahren besteht darin, lokale Änderungen, die Sie vorgenommen haben, aber nicht für andere Benutzer freigegeben haben, neu anzuordnen, aber nach der Freigabe von Änderungen für andere Benutzer zusammenzuführen. Dies vermeidet Probleme beim Umschreiben des Verlaufs, während Sie weiterhin problemlos Änderungen vornehmen können, während Sie Ihren Code lokal entwickeln.

Hinweis

Visual Studio 2019 umfasst nun ein neues Git-Tool, das beim Verbinden mit einem Git-Repository ein verbessertes Benutzererlebnis bietet. Wenn Sie dieses Tool aktivieren, wird das Tool Team Explorer bei der Verbindung mit einem Git-Repository effektiv deaktiviert. Sie können das neue Tool abrufen, indem Sie Visual Studio 2019 Version 16.6 herunterladen. Informationen zum Aktivieren und Verwenden des neuen Tools finden Sie unter Git-Benutzeroberfläche in Visual Studio (Vorschau).

Wechseln Sie in Team Explorer zur Ansicht Verzweigungen . Klicken Sie auf REBASE. Es wird eine Eingabeaufforderung angezeigt, in der die Änderungen von Ihrer aktuellen Verzweigung neu angeordnet werden können. Anschließend wird ein Dropdown-Dropdown Fenster angezeigt, um anzugeben, in welcher Verzweigung die Änderungen in der aktuellen Verzweigung wiedergegeben werden sollen. Wenn es zu einem Konflikt kommt, lösen Sie ihn genauso wie beim Auflösen von Mergekonflikten in Visual Studio.

Neuverwendung von git in Visual Studio

Erzwingen von Push zum Aktualisieren Ihres remotebranch

Warnung

Erzwingen Sie niemals eine Verzweigung, an der andere Benutzer arbeiten. Erzwingen Sie nur pushverzweigungen, mit denen Sie arbeiten.

Nach einer erfolgreichen rebase weist der lokale Branch einen anderen Verlauf auf als der remotebranch. Sie müssen erzwingen, dass Ihre lokale Verzweigung per Push per Push aktualisiert wird.

> git push -f users/frank/myfixes

Squash-lokale Commits

Interaktive rebase wird in Visual Studio derzeit nicht unterstützt, aber Sie können die folgenden Befehlszeilen Schritte zum Konsolidieren Ihrer Commits verwenden.

Eine besondere Verwendung von rebase ist verfügbar, um die Änderungen, die in einem Satz von Commits vorgenommen werden, auf einen einzelnen Commit zu übertragen. Dies ist nützlich, um Commit-Verläufe zu bereinigen , bevor Sie in eine Remote Verzweigung übertragen werden. Die Vorteile der Lesbarkeit sind von Bedeutung, und da Sie den freigegebenen Code nie neu basieren, können Sie die Änderungen problemlos zusammenfassen.

Wenn Sie Commits konsolidieren möchten, entscheiden Sie sich zuerst für die Anzahl der Commits, die Sie in einem anderen zusammenfassen möchten. Sie sind nicht genau so, wie Sie genau feststellen können, welche Commits beim Ausführen des Befehls bei Squash ausgeführt werden. Wenn Sie fünf Commits für Squash haben, stellen Sie sicher, dass keine nicht bereitgestellten Änderungen vorhanden sind, und führen Sie Folgendes aus:

> git rebase -i HEAD~5

Daraufhin wird ein Editor geöffnet, in dem Folgendes angezeigt wird:

pick 7b43f3f Updated router.js
pick 00859d9 Updated README.md pick 9d247f7 initial commits
pick 7068b09 Updated README.md with build instructions

Sie behalten den ersten der Änderungen bei (belassen Sie ihn pick ) und ändern dann pick squash für die restlichen Änderungen in. Speichern Sie, und schließen Sie den Editor. Git versucht nun, die Commits in einem einzelnen Commit zu verscheinigen. Nachdem die Neuerstellung abgeschlossen ist, wird ein neues Editor-Fenster geöffnet, in dem Sie von git aufgefordert werden, eine Commit-Nachricht für den Commit mit den kombinierten Änderungen anzugeben. Sie sollten dies auf eine Textzeile (genauso wie bei einem normalen Commit) angleichen und den Editor speichern und beenden.

Azure DevOps Services-und TFS-Benutzer können Ihre Pull Requests zusammen führen , um Commits zu konsolidieren, die dem hauptbranch hinzugefügt wurden.

Nächste Schritte