Fehler beim Festschreiben ... Wie kann ich das Problem beheben? Ein Durcheinander in der Geschichte der Commits ... Wie kann man alles anständig aussehen lassen? Der Autor des Artikels, dessen Übersetzung wir heute veröffentlichen, sagt, dass er speziell für diejenigen geschrieben wurde, die solche Fragen gestellt haben. Ihm zufolge können Sie, nachdem Sie die hier vorgestellten Techniken für die Arbeit mit Git studiert haben, den Weg der Beherrschung von Git erheblich vorantreiben.
Es wird davon ausgegangen, dass der Leser dieses Artikels bereits mit den Grundlagen von Git vertraut ist. Ist dies nicht der Fall, wird zunächst empfohlen, die Basis zu beherrschen, z. B. mit 
diesem Material.
Beheben Sie Fehler in Commits
Hier werden verschiedene Szenarien für Fehler bei Commits und deren Korrektur betrachtet.
▍ Szenario Nummer 1
Angenommen, Sie haben viele Dateien festgeschrieben und festgestellt, dass die Festschreibungsnachricht nicht sehr klar war. Danach haben Sie beschlossen, diese Nachricht zu ändern. Verwenden Sie dazu den 
git commit --amend . Hier ist ein Beispiel für seine Anwendung:
 git commit --amend -m "New commit message" 
▍ Szenario Nummer 2
Angenommen, Sie wollten sechs Dateien festschreiben, haben aber fälschlicherweise nur fünf festgeschrieben. Es scheint, dass Sie diesen Fehler einfach beheben können, indem Sie ein neues Commit erstellen und dort die fehlende sechste Datei hinzufügen.
Dieser Ansatz hat das Recht auf Leben. Um den Commit-Verlauf in einem guten Zustand zu halten, ist es wahrscheinlich viel besser, dem gleichen Commit eine zufällig übersprungene Datei hinzuzufügen. Dies kann wiederum mit dem 
git commit --amend . Die Verwendung sieht folgendermaßen aus:
 git add file6 git commit  
Das Flag 
--no-edit bedeutet, dass sich die Festschreibungsnachricht nicht ändert.
▍ Szenario Nummer 3
Die Commits in Git sind an den Namen des Autors und seine E-Mail-Adresse gebunden. In der Regel werden diese Daten durch die Erstkonfiguration von Git angezeigt. Infolgedessen kümmern sich diejenigen, die Git verwenden, bei der Ausführung jedes Commits möglicherweise nicht um die Informationen über den Autor.
Darüber hinaus ist es durchaus möglich, dass Sie bei der Arbeit mit einigen Projekten Informationen über den Autor verwenden müssen, z. B. eine E-Mail-Adresse, die sich von den Hauptadressen unterscheidet. Für ein solches Projekt müssen Sie mit diesem Befehl eine E-Mail-Adresse angeben:
 git config user.email "your email id" 
Angenommen, Sie haben dieses Setup vergessen und bereits das erste Commit durchgeführt. Korrigieren Sie die Situation, die uns bereits bekannt ist. Mit dieser Option können Sie die Informationen zum Autor des vorherigen Commits ändern:
 git commit --amend --author "Author Name <Author Email>" 
▍ Hinweis
Verwenden Sie den Befehl " 
amend nur in Ihrem lokalen Repository. Die Verwendung in Remote-Repositories kann zu enormer Verwirrung führen.
Ordnung in die Geschichte der Commits bringen
Angenommen, Sie arbeiten an einem Code für ein Projekt. Sie wissen, dass es ungefähr zehn Tage dauern wird. Während dieser zehn Tage verpflichten sich andere Entwickler zum Quell-Repository.
Es wird empfohlen, die Synchronisierung zwischen dem lokalen und dem Remote-Repository aufrechtzuerhalten. Dies vermeidet die vielen Zusammenführungskonflikte, die auftreten, wenn Repositorys zu selten zum Synchronisieren sind. Nach dieser Vorgehensweise beschließen Sie, alle zwei Tage Änderungen aus dem Remote-Repository herunterzuladen.
Jedes Mal, wenn Sie Code von einer Remote-Datei in das lokale Repository herunterladen, wird im lokalen Repository ein neues Zusammenführungs-Commit erstellt. Dies bedeutet, dass es in Ihrem lokalen Commit-Verlauf viele solcher Commits gibt, die denjenigen verwirren können, der Ihren Code anzeigt.
 Verlauf der Commits im lokalen Repository
Verlauf der Commits im lokalen RepositoryWie räume ich den Commit-Verlauf auf? Um dieses Problem zu lösen, können Sie den 
git rebase .
▍Git Rebase-Befehl
Betrachten Sie den 
git rebase als Beispiel.
 Commits im Release-Zweig und im Feature-Zweig
Commits im Release-Zweig und im Feature-ZweigIm 
Release Zweig gibt es drei Commits: 
Rcommit1 , 
Rcommit2 und 
Rcommit3 . Sie haben Ihren 
Feature Zweig aus dem 
Release Zweig erstellt, als er nur ein Commit hatte - 
Rcommit1 . Danach haben Sie dem 
Feature Zweig zwei Commits hinzugefügt. Dies sind 
Fcommit1 und 
Fcommit2 . Ihr Ziel ist es, Commits aus dem 
Release Zweig in Ihren 
Feature Zweig hochzuladen. Dazu verwenden Sie den Befehl 
rebase .
Wir werden die 
release und 
feature für die beiden betrachteten Zweige verwenden.
Infolgedessen 
rebase Verwendung des 
rebase aus:
 git checkout feature git rebase release 
▍ Funktionen des Rebase-Befehls
Der Befehl 
rebase verwendet, um sicherzustellen, dass der 
Feature Zweig frischen Code aus dem 
Release Zweig enthält.
Bei Anwendung dieses Befehls versucht das System, jedes Commit einzeln zum 
Feature Zweig hinzuzufügen und auf Konflikte zu prüfen. Wenn dies kompliziert klingt, schauen wir uns die folgende Abbildung an. Dies zeigt die internen Mechanismen des 
rebase .
 Feature-Zweig und drei Schritte des Rebase-Befehls
Feature-Zweig und drei Schritte des Rebase-BefehlsSchritt 1
Wenn der Befehl aufgerufen wird, zeigt der 
Feature Zweig auf den Kopf des 
Release Zweigs. Danach gibt es drei Commits im 
Feature Zweig: 
Rcommit1 , 
Rcommit2 und 
Rcommit3 . Vielleicht haben Sie hier eine Frage dazu, was mit den 
Fcommit1 und 
Fcommit2 passiert ist. Diese Commits sind nicht verschwunden, sie werden in den nächsten Schritten verwendet.
Schritt 2
Git versucht nun, das 
Fcommit1 Commit zum 
Feature Zweig hinzuzufügen. Wenn kein Konflikt 
Fcommit1 , wird 
Fcommit1 nach 
Rcommit3 hinzugefügt. Wenn ein Konflikt erkannt wird, meldet Git ihn und Sie müssen diesen Konflikt manuell lösen.
Schritt 3
Nachdem das Commit 
Fcommit1 zum 
Feature Zweig hinzugefügt wurde, versucht Git, dort auch 
Fcommit2 hinzuzufügen. Auch hier wird, wenn keine Konflikte 
Fcommit2 , 
Fcommit2 nach 
Fcommit1 hinzugefügt und der Vorgang erfolgreich abgeschlossen. Wenn ein Konflikt festgestellt wird, wird Git dies wie zuvor melden und anbieten, sich damit zu befassen.
Nach Abschluss des 
rebase Befehls sehen Sie, dass im 
Feature Zweig Commits 
Rcommit1 , 
Rcommit2 , 
Rcommit3 , 
Fcommit1 und 
Fcommit2 .
▍ Hinweis
Bei der Arbeit mit Git werden sowohl der 
merge Befehl als auch der 
rebase Befehl 
rebase . Dies bedeutet nicht, dass einer von ihnen dem anderen vorzuziehen ist.
Wenn Sie den 
merge , erhalten Sie ein 
merge Commit. Wenn Sie 
rebase , haben Sie keine zusätzlichen 
rebase .
Es wird empfohlen, diese Befehle in verschiedenen Situationen zu verwenden. 
rebase eignet sich daher zum Aktualisieren des lokalen Repository-Codes basierend auf dem neuesten Code aus dem Remote-Repository. Verwenden Sie den Befehl 
merge , um Pull-Anforderungen auszuführen, um den 
Feature Zweig mit dem 
Release oder 
Master Zweig zusammenzuführen.
Zusammenfassung
Nachdem Sie die in diesem Artikel vorgestellten Konzepte studiert haben, haben Sie Ihre Git-Fähigkeiten verbessert und sind dem Niveau eines Git-Experten näher gekommen. Wir hoffen, dass das, was Sie hier gelernt haben, für Sie nützlich ist. Aber die Welt von Git ist riesig. Nachdem Sie etwas Neues gemeistert haben, hören Sie nicht dort auf und gehen Sie weiter.
Liebe Leser! Haben Sie ein Durcheinander bei Git-Commits festgestellt?
