Git: häufige Fehler und Möglichkeiten, sie zu beheben

Ursprünglicher Autor: Ankur Biswas
  • Übersetzung
Wenn Sie schon einmal an einem großen Projekt gearbeitet haben, an dem neben Ihnen noch viele andere Programmierer beteiligt sind, haben Sie Git offensichtlich als Versionskontrollsystem verwendet. Bei der Verwendung von etwas, das in seiner Komplexität Git ähnlich ist, macht jeder Fehler.


Der Autor des Materials, dessen Übersetzung wir heute veröffentlichen, wird häufige Fehler besprechen, die Programmierer bei der Arbeit mit Git machen, und darüber sprechen, wie mit diesen Fehlern umzugehen ist.

Fehler in der letzten Commit-Nachricht


Nach ein paar Stunden guter Arbeit ist es leicht, einen Fehler in der Commit-Nachricht zu machen. Glücklicherweise lässt sich dies mit dem folgenden Befehl leicht beheben:

git commit--amend

Dieser Befehl öffnet den Editor und ermöglicht es Ihnen, Änderungen an der letzten Commit-Nachricht vorzunehmen. Niemand außer Ihnen sollte wissen, dass Sie mit drei „m“ ein „Initial Commment“ geschrieben haben.

Fehler im Namen der Niederlassung


Angenommen, es ist fast 15 Uhr, und Sie haben noch nicht zu Abend gegessen. Als Folge von Hunger quälten Sie einen neuen Zweig feature-brunch. Lecker, sag nichts.

Dieses Problem kann auch gelöst werden. Sie können einen Zweig auf dieselbe Weise umbenennen, wie Sie Dateien mit dem Befehl umbenennen mv. Es geht darum, es an einen neuen Ort mit dem richtigen Namen zu verschieben:

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. Der alte Zweig sollte gelöscht und der neue Zweig an das Repository gesendet werden:

git push origin --delete feature-brunch
git push origin feature-branch

Zufällige Commit-Änderungen an den Master-Zweig


Angenommen, Sie arbeiten an einer neuen Gelegenheit, und Sie haben ganz schnell vergessen, einen neuen Zweig für sie zu erstellen. Sie sind bereits eine Reihe von Dateien und alles ist im Thread master. Sie können alle diese Änderungen mit den folgenden drei Befehlen in den neuen Zweig verschieben. Bitte beachten Sie: Wenn Sie nicht auf Änderungen, Befehle commitoder angewendet werden stash, gehen diese verloren.

git branch feature-branch
git resetHEAD~ --hard
git checkout feature-branch

Dadurch wird eine neue Verzweigung erstellt, die Änderungen in der Verzweigung werden masterin den Zustand zurückgesetzt, in dem sie sich vor den Änderungen befanden, und es wird ein Übergang zur neuen Verzweigung vorgenommen, der alle zuvor vorgenommenen Änderungen enthält master.

Arbeiten Sie mit Dateien, die Sie beim letzten Commit vergessen haben


Ein weiterer häufiger Fehler bei der Arbeit mit Git ist, dass Commits zu früh ausgeführt werden und sie nicht die erforderlichen Dateien erhalten. Nehmen wir an, Sie haben eine Datei vergessen oder vergessen, sie zu speichern, oder Sie müssen eine kleine Änderung an der Datei vornehmen, damit das letzte Commit sinnvoll ist. In dieser Situation wird sich das Team wieder als nützlich erweisen --amend. 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--amend

Danach können Sie die Festschreibungsnachricht ändern oder unverändert lassen.

Hinzufügen der falschen Datei zum Repository


Was ist, wenn Ihr Fehler das genaue Gegenteil des vorherigen darstellt? Was ist, wenn Sie dem Index eine Datei hinzugefügt haben, die Sie nicht festlegen möchten? Dies kann eine ENV-Datei, ein Projekt-Build-Verzeichnis oder ein Foto Ihres Hundes sein, das Sie versehentlich im falschen Ordner gespeichert haben. All dies kann behoben werden.

Wenn Ihre Aktionen auf die Indizierung einer Datei beschränkt sind, Sie sie jedoch noch nicht festgelegt haben, ist es sehr einfach, das Problem mithilfe des Befehls zu lösen reset:

git reset /assets/img/misty-and-pepper.jpg

Wenn Sie weit genug fortgeschritten sind und es geschafft haben, Änderungen zu übernehmen, wissen Sie, dass dies korrigierbar ist. Wir müssen nur noch ein paar weitere 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 Commit abgebrochen, das Bild gelöscht und das neue Commit dort platziert, wo es sein sollte.

Was ist, wenn alles schief gelaufen ist?


Die Technik, die wir jetzt besprechen, hilft in Situationen, in denen alles schief geht. Dies ist beispielsweise der Fall, wenn Sie vorgefertigte Lösungen aus StackOverflow kopieren möchten und Ihr Repository nach der Arbeit in einem schlechteren Zustand ist als zu Beginn. In dieser Situation sind wir vielleicht alle gefallen.

Der Befehl git reflogzeigt eine Liste aller von Ihnen vorgenommenen Aktionen. Anschließend können Sie die Git-Tools verwenden, um Änderungen rückgängig zu machen und zu einem früheren Repository-Status zurückzukehren. Es ist erwähnenswert, dass diese Methode als letzter Ausweg betrachtet werden sollte, und vor ihrer Verwendung lohnt es sich, darüber nachzudenken. Die Liste der Vorgänge kann mit dem folgenden Befehl angezeigt werden:

git reflog

Git merkt sich alle unsere Aktionen und als Ergebnis dieses Befehls können Sie etwa 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~137a632d 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 infoto the site
dfa27a2 HEAD@{9}: reset: moving to HEAD
dfa27a2 HEAD@{10}: commit (amend): Added contributing infoto the site
700d0b5 HEAD@{11}: commit: Addded contributing infoto the site
efba795 HEAD@{12}: commit (initial): Initial commit

Beachten Sie die linke Spalte dieser Liste. Es enthält Indizes. Wenn Sie zu einem bestimmten Zeitpunkt der Vergangenheit zurückkehren müssen, führen Sie den folgenden Befehl aus, und ersetzen Sie den {index}entsprechenden Link, zum Beispiel - dfa27a2. Dieser Befehl sieht folgendermaßen aus:

git resetHEAD@{index}

Ergebnisse


Wir haben einige Möglichkeiten untersucht, mit Fehlern umzugehen, die bei der Arbeit mit Git auftreten. Wir hoffen, dass Sie solche Fehler nicht zulassen und dass diese Techniken der Arbeit mit Git für Sie nicht nützlich sind. Und wenn etwas schief geht, wissen Sie, was zu tun ist.

Liebe Leserinnen und Leser! Wissen Sie über interessante Techniken für die Arbeit mit Git? Wenn ja, bitten Sie sie zu teilen.


Jetzt auch beliebt: