Wenn Sie jemals an einem großen Projekt gearbeitet haben, an dem neben Ihnen viele andere Programmierer beteiligt sind, haben Sie Git offensichtlich als Versionskontrollsystem verwendet. Je nachdem, wie komplex ein ähnlicher Git ist, macht jeder Fehler.
Der Autor des Materials, dessen Übersetzung wir heute veröffentlichen, wird häufige Fehler diskutieren, die Programmierer bei der Arbeit mit Git machen, und darüber sprechen, wie mit diesen Fehlern umgegangen werden soll.
Fehler in der letzten Festschreibungsnachricht
Nach mehreren Stunden guter Arbeit ist es leicht, einen Fehler in der Festschreibungsnachricht zu machen. Glücklicherweise kann dies mit dem folgenden Befehl leicht behoben werden:
git commit
Dieser Befehl öffnet den Editor und ermöglicht es Ihnen, Änderungen an der letzten Nachricht des Commits vorzunehmen. Niemand außer Ihnen sollte wissen, dass Sie "Initial Commment" mit drei "m" geschrieben haben.
Fehler im Filialnamen
Angenommen, die Uhr ist fast 15:00 Uhr und Sie haben noch nicht zu Mittag gegessen. Infolgedessen haben Sie, vom Hunger gequält, einen neuen Branch-
feature-brunch
. Lecker, du kannst nichts sagen.
Dieses Problem kann auch gelöst werden. Sie können einen Zweig auf die gleiche Weise umbenennen, wie Sie Dateien mit dem Befehl
mv
umbenennen. Es geht darum, sie an einen neuen Ort mit dem richtigen Namen zu bringen:
git branch -m feature-brunch feature-branch
Wenn Sie diesen Thread bereits an das Repository gesendet haben, müssen Sie einige weitere Schritte ausführen, um ihn umzubenennen. Sie müssen den alten Zweig löschen und den neuen an das Repository senden:
git push origin --delete feature-brunch git push origin feature-branch
Zufällige Festschreibungsänderungen am Hauptzweig
Angenommen, Sie arbeiten an einer neuen Funktion und haben in Eile vergessen, einen neuen Zweig dafür zu erstellen. Sie haben bereits eine Reihe von Dateien festgeschrieben, und all dies liegt im Hauptzweig. Sie können alle diese Änderungen mit den folgenden drei Befehlen in einen neuen Zweig verschieben. Bitte beachten Sie, dass die
commit
oder
stash
Befehle verloren gehen, wenn Sie sie nicht auf die Änderungen angewendet haben.
git branch feature-branch git reset HEAD~
Infolgedessen wird ein neuer Zweig erstellt, die Änderungen werden im Hauptzweig auf den Zustand zurückgesetzt, in dem sie sich vor den Änderungen befanden, und es wird ein Übergang zum neuen Zweig ausgeführt, der alle zuvor am
master
vorgenommenen Änderungen enthält.
Arbeiten Sie mit Dateien, die Sie vergessen haben, zum letzten Commit hinzuzufügen
Ein weiteres häufiges Versehen bei der Arbeit mit Git ist, dass Commits zu früh ausgeführt werden und die erforderlichen Dateien nicht in sie gelangen. Angenommen, Sie haben eine Datei verpasst, vergessen, sie zu speichern, oder Sie müssen eine kleine Änderung an der Datei vornehmen, damit das letzte Festschreiben sinnvoll ist. In dieser Situation ist der Befehl
--amend
wieder nützlich. Fügen Sie die fehlende Datei zum Repository-Index hinzu und führen Sie den folgenden Befehl aus:
git add missed-file.txt git commit
Danach können Sie die Festschreibungsnachricht ändern oder sie unverändert lassen.
Hinzufügen der falschen Datei zum Repository
Was ist, wenn Ihr Fehler das genaue Gegenteil des vorherigen ist? Was ist, wenn Sie dem Index eine Datei hinzugefügt haben, die Sie nicht festschreiben möchten? Es kann sich um eine ENV-Datei, ein Projekterstellungsverzeichnis oder ein Foto Ihres Hundes handeln, das Sie versehentlich im falschen Ordner gespeichert haben. All dies kann behoben werden.
Wenn sich Ihre Aktionen auf die Indizierung der Datei beschränken, Sie sie jedoch noch nicht festgeschrieben haben, können Sie das Problem mit dem Befehl
reset
ganz einfach beheben:
git reset /assets/img/misty-and-pepper.jpg
Wenn Sie weit genug fortgeschritten sind und die Änderung festschreiben konnten, wissen Sie, dass dies behoben werden kann. Sie müssen nur noch ein paar Befehle verwenden:
git reset --soft HEAD~1 git reset /assets/img/misty-and-pepper.jpg rm /assets/img/misty-and-pepper.jpg git commit
Infolgedessen wird das letzte Festschreiben abgebrochen und das Bild gelöscht. Danach wird das neue Festschreiben dort platziert, wo es sein sollte.
Was ist, wenn alles schief gelaufen ist?
Die Technik, die wir jetzt diskutieren werden, hilft in Situationen, in denen alles schief geht. Dies ist beispielsweise der Fall, wenn Sie zu gerne fertige Lösungen mit StackOverflow kopieren möchten und sich Ihr Repository nach der Arbeit in einem schlechteren Zustand befindet als zu Beginn. Vielleicht sind wir alle in diese Situation geraten.
Der
git reflog
zeigt eine Liste
git reflog
. Anschließend können Sie die Git-Tools verwenden, um Änderungen rückgängig zu machen und zu einem der vorherigen Status des Repositorys zurückzukehren. Es ist erwähnenswert, dass diese Methode als letztes Mittel in Betracht gezogen werden sollte. Bevor Sie sie anwenden, sollten Sie sorgfältig überlegen. Sie können also auflisten, was mit dem folgenden Befehl getan wurde:
git reflog
Git merkt sich alle unsere Aktionen und als Ergebnis der Ausführung dieses Befehls können Sie Folgendes sehen:
3ff8691 (HEAD -> feature-branch) HEAD@{0}: Branch: renamed refs/heads/feature-brunch to refs/heads/feature-branch 3ff8691 (HEAD -> feature-branch) HEAD@{2}: checkout: moving from master to feature-brunch 2b7e508 (master) HEAD@{3}: reset: moving to HEAD~ 3ff8691 (HEAD -> feature-branch) HEAD@{4}: commit: Adds the client logo 2b7e508 (master) HEAD@{5}: reset: moving to HEAD~1 37a632d HEAD@{6}: commit: Adds the client logo to the project 2b7e508 (master) HEAD@{7}: reset: moving to HEAD 2b7e508 (master) HEAD@{8}: commit (amend): Added contributing info to the site dfa27a2 HEAD@{9}: reset: moving to HEAD dfa27a2 HEAD@{10}: commit (amend): Added contributing info to the site 700d0b5 HEAD@{11}: commit: Addded contributing info to the site efba795 HEAD@{12}: commit (initial): Initial commit
Achten Sie auf die Spalte ganz links in dieser Liste. Es enthält Indizes. Wenn Sie irgendwann in der Vergangenheit zurückkehren müssen, führen Sie den folgenden Befehl aus und ersetzen Sie
{index}
durch den entsprechenden Link, z. B.
dfa27a2
. Dieser Befehl sieht folgendermaßen aus:
git reset HEAD@{index}
Zusammenfassung
Wir haben uns einige Möglichkeiten angesehen, um mit Fehlern umzugehen, die bei der Arbeit mit Git auftreten. Wir hoffen, dass Sie solche Fehler nicht machen und diese Methoden der Arbeit mit Git für Sie nicht nützlich sind. Und wenn etwas schief geht, wissen Sie, was zu tun ist.
Liebe Leser! Kennen Sie interessante Tricks für die Arbeit mit Git? Wenn ja, teilen Sie sie bitte.
