Was sind die häufigsten Git-Fehler und wie können sie behoben werden?



Machen Sie die häufigsten Fehler rückgängig, während Sie Ihren Code im Git-Versionierungssystem-Tool versionieren, und schützen Sie Ihre Datenintegrität.

Mit dem Boom von Dank der Technologie ist es für jeden IT-Mitarbeiter unumgänglich, gleichzeitig an mehreren Daten zu arbeiten, und Ihre Daten entwickeln sich mit der Zeit ständig weiter. Es ist auch wichtig, jede Änderung der Daten zu verfolgen und darauf vorbereitet zu sein, unerwünschte Änderungen bei Bedarf rückgängig zu machen oder rückgängig zu machen.

Ich muss gestehen, dass die Versionierung meiner Daten in Git es mir ermöglicht, experimenteller in meiner Projektentwicklung zu sein. Wenn ich es vermassle, weiß ich, dass Git immer eine Möglichkeit hat, diese Version meines Projekts rückgängig zu machen und / oder auf die Art und Weise zurückzusetzen, wie sie war, bevor ich es vermasselt habe. Jeder Die Ebene soll ermöglichen, dass die Datenänderungen überprüft und geändert und / oder korrigiert werden, bevor die Daten in der nächsten Stufe verschoben werden. Die folgenden Fehler werden in diesem Blog behandelt:





Heben Sie die Bereitstellung von Dateien / Verzeichnissen aus dem Index auf

wie man eine Warnung in HTML macht

Beim Hinzufügen und / oder Ändern von Dateien verwenden Sie häufig das Standardverhalten des Befehls 'git add', mit dem alle Dateien und Verzeichnisse zum Index hinzugefügt werden.Oft haben Sie das Bedürfnis, bestimmte Dateien zu entfernen oder ein letztes Mal zu ändern, bevor Sie sie festschreiben.



Syntax: Git zurücksetzen


Dateien aus dem Index entfernen - häufige Git-Fehler -Edureka

Wenn Sie die Bereitstellung von Dateien aus dem Indexbereich aufheben, können Sie Ihre Daten erneut bearbeiten, bevor Sie sich zu einem lokalen Repo verpflichten.



Bearbeiten Sie die letzte festgeschriebene Nachricht

Befehl: git commit --amend
Sie können die letzte Festschreibungsnachricht bearbeiten, ohne eine neue zu erstellen. Um die Festschreibungsprotokolle aufzulisten, habe ich einen Alias ​​'hist' festgelegt:
Befehl: git config --global alias.hist 'log --pretty = Format: '% C (gelb)% h% Creset% ad | % C (grün)% s% Creset% C (rot)% d% Creset% C (blau) [% an] '--graph --decorate --date = short'x


Ändern Sie nicht die Festschreibungsnachricht, die bereits in ein Remote-Repository übertragen und für andere freigegeben wurde, da dies den früheren Festschreibungsverlauf ungültig machen würde und daher alle darauf basierenden Arbeiten beeinträchtigt werden könnten.

Beim letzten Commit wurden einige Änderungen vergessen

Angenommen, Sie haben vergessen, einige Änderungen vorzunehmen, und haben Ihren Snapshot bereits festgeschrieben. Außerdem möchten Sie keine weitere Festschreibung vornehmen, um Ihren Fehler hervorzuheben.
Befehl: git commit --amend


Ich habe hervorgehoben, wie die sha-1-ID des letzten Festschreibungsobjekts neu erstellt und geändert wurde. Ich gab vor, ein einziges Commit gemacht zu haben, bei dem beide Änderungen zu einem zusammengefasst wurden.

Verwerfen Sie lokale Änderungen

Hier ist also ein Fall, in dem ich die README-Datei geändert und bereitgestellt habe. Als Nächstes habe ich dieselbe Datei ein zweites Mal geändert, aber festgestellt, dass ich die zweite Änderung nicht wollte.

Lassen Sie mich jetzt nicht die gesamte Änderung manuell rückgängig machen, sondern einfach die bereitgestellte Version der Datei abrufen.
Syntax:
Git Checkout -–Lokale Änderungen in einer Datei
Git Checkout -–Lokale Änderungen in allen Dateien im Verzeichnis & schüchtern & schüchtern

Befehl: Git Checkout - README

Also habe ich meine letzten Änderungen an der Datei verworfen und die bereitgestellte Version der Datei akzeptiert. Beim nächsten Commit wird nur die bereitgestellte Version der Datei im lokalen Repository abgelegt.

Übermittelte personenbezogene Daten an das lokale Repository

Ich möchte bestimmte Daten aus dem lokalen Repository entfernen, aber die Dateien im Arbeitsverzeichnis behalten.
Syntax:
git reset --mixed HEAD ~
Git Reset - gemischt

Befehl: git reset --mixed HEAD ~ 1
HEAD ~ 1 zeigt ein Commit unmittelbar vor dem letzten Commit an, auf das der aktuelle Zweig HEAD zeigt.

Dateien im aktuellen Snapshot wurden sowohl aus dem lokalen Repository als auch aus dem Staging-Bereich entfernt. Fügen Sie der globalen .gitignore-Datei die folgenden Muster hinzu, um zu verhindern, dass sie von git verfolgt werden.
vim ~ / .gitignore_global
# Passwortdateien #
*.bestehen
*.Schlüssel
* .passwd

Dadurch wird das Commit entfernt, das den Snapshot von Kennwortdateien enthielt, und Sie erhalten einen sauberen Staging-Bereich. Meine Dateien sind immer noch in meinem Arbeitsverzeichnis vorhanden, aber nicht mehr im lokalen Repository vorhanden. Sie werden auch nicht in ein Remote-Repository übertragen.

Vorsicht: Wenn du sie verlierst, kann git sie nicht für dich wiederherstellen, da es nichts davon weiß.

Ersetzen Sie das letzte Commit durch ein neues Commit

Syntax: git reset --soft [/ HEAD ~ n>]

Mit der Option '–soft' werden die festgeschriebenen Dateien einfach aus dem lokalen Repository entfernt, während sie noch im Index bereitgestellt sind, und Sie können sie nach einer Überprüfung erneut festschreiben. ist der sha-1 des Snapshots, den Sie aus dem lokalen Repo entfernen möchten. Dabei ist n die Anzahl der Commits vor dem HEAD-Commit

Befehl ::Git Reset - Soft HEAD ~ 1


Ändern Sie Dateien und stellen Sie sie erneut bereit

Befehl: git commit -m 'Hinzufügen von index.html und style.css'
Ihr Commit-Verlauf stellt sich nun wie folgt heraus:

Die falschen Daten wurden festgeschrieben

Syntax:
git reset --hard HEAD ~ n- Setzen Sie das Projekt vor dem letzten festgeschriebenen Snapshot auf 'n' zurück
git reset --hard- Setzen Sie das Projekt auf den angegebenen Commit-ID-Snapshot zurück

Befehl: git reset --hard HEAD ~ 1


Das letzte Commit und die beschädigten Dateien werden aus dem lokalen Repository, dem Staging-Bereich sowie dem Arbeitsverzeichnis entfernt.

Vorsicht: Dies ist ein gefährlicher Befehl, da Sie am Ende Dateien im Arbeitsverzeichnis verlieren. Nicht empfohlen für ein remote freigegebenes Repository.

Kehren Sie zu meinem alten Projektstatus zurück

Sie können zu einem älteren Status Ihres Projekts in der Geschichte der Zeit wechseln. Wenn Sie in der neuesten Version Probleme haben oder Verbesserungen in älterem Code benötigen, möchten Sie möglicherweise einen weiteren Zweig aus diesem alten Projekt-Snapshot erstellen, um Ihre aktuelle Arbeit nicht zu behindern. Mal sehen, wie:
ein. Listen Sie den Projektverlauf auf und entscheiden Sie sich für die ältere Commit-ID, Befehl:geh hist
b. Erstellen Sie einen weiteren Zweig aus der Commit-ID:Git Checkout -b Old-State e7aa9a5
c. Arbeiten Sie weiter am Code und führen Sie ihn später mit dem Hauptzweig zusammen.

Stellen Sie einen gelöschten lokalen Zweig wieder her

Es ist möglich, die verlorene Arbeit in einem Referenzzweig neu zu generieren. Angenommen, ich habe den Zweig 'old_code' gelöscht, ohne mit dem Hauptzweig zu verschmelzen, und die Arbeit verloren. Und nein, ich habe den Zweig auch nicht in ein Remote-Repository verschoben. Was dann? Nun, git Tracks und führen Sie einen Tagebucheintrag über alle Änderungen, die an jeder Referenz vorgenommen wurden. Sehen wir uns meine an:Reflog gehen

HEAD @ {2} ist also der Zeiger, als ich zum Zweig 'old_code' gewechselt bin. Lassen Sie uns Folgendes wiederherstellen:

Syntax:Git Checkout -b
Befehl:git checkout -b alter_code HEAD @ {2}

Sie müssen sich jetzt zum Zeitpunkt der Erstellung mit Ihrer neuesten Arbeit im Zweig 'old_code' befinden. Außerdem war der 'Reflog'-Zeiger auf HEAD @ {1} das kürzlich für den Zweig' old_code 'vorgenommene Commit. Um dieses eindeutige wiederherzustellen Commit Führen Sie den Befehl einfach wie folgt aus:git reset --hard HEAD @ {1}.Dadurch werden auch die geänderten Dateien im Arbeitsverzeichnis wiederhergestellt.

Wenn Sie detailliert wissen möchten, wie dieser Befehl funktioniert und wie Sie die 'Reflog' -Einträge verwalten können, können Sie auch meinen früheren Beitrag über lesenWiederherstellen des gelöschten Zweigs aus dem Git-Reflog.

Machen Sie Änderungen rückgängig, die in einem Commit vorgenommen wurden

gehenzurückkehrenwird verwendet, um einige neue Commits aufzuzeichnen, um den Effekt einiger früherer Commits umzukehren.
Syntax: Git zurücksetzen
Aus meinen Commit-Protokollen möchte ich die in der hervorgehobenen Commit-ID vorgenommene Änderung rückgängig machen:

Befehl: git revert 827bc0d

schnell scheitern vs sicher scheitern

Es ist besser, dass Sie die freigegebenen Commits nicht 'hart' zurücksetzen, sondern sie 'zurücksetzen', um den Verlauf beizubehalten, damit es für alle einfacher wird, die Verlaufsprotokolle aufzuspüren, um herauszufinden, was von wem zurückgesetzt wurde und warum?

Sie können dieselbe Logik verwenden, um die Commits in Bezug auf den HEAD-Zeiger zu referenzieren, anstatt die Commit-ID anzugeben, wie in HEAD ~ 3 oder HEAD ~ 4 usw.

Hat meiner Filiale einen falschen Namen gegeben

Sie können einen lokalen Zweigstellennamen umbenennen. Es kommt so oft vor, dass Sie Ihren Zweig basierend auf dem Problem, an dem Sie arbeiten, umbenennen möchten, ohne die Mühe zu haben, Ihre gesamte Arbeit von einem Ort an einen anderen zu migrieren. Sie können sich beispielsweise entweder in demselben Zweig oder in einem anderen Zweig befinden und den gewünschten Zweig dennoch wie unten gezeigt umbenennen:
Syntax: Git-Zweig -m
Befehl: Git-Zweig -m alter_code alter_ # 4920

Wie Sie sich vielleicht fragen, verfolgt Git eine Spur dieser Umbenennung? Ja, es bezieht sich auf Ihre 'Reflog' -Einträge. Hier ist meine:

Das Umbenennen eines Zweigs hat keine Auswirkungen auf den Remote-Tracking-Zweig. Wir werden im Remote-Abschnitt sehen, wie ein Zweig im Remote-Repository ersetzt wird

Ordnen Sie die Verlaufsprotokolle neu an, bevor Sie sie an die Fernbedienung senden

Wie ich wünschte, ich hätte bestimmte Commits früher als andere gemacht und einige Commits überhaupt nicht gemacht. Ordnen Sie die alten Commits interaktiv neu an und bearbeiten Sie sie, um den Code effektiv zu korrigieren oder zu verbessern
Syntax: Git Rebase -i
Befehl: Git Rebase -i fb0a90e–Starten Sie die Neuausrichtung der Commits, die nach der Commit-ID fb0a90e vorgenommen wurden

Besuchen Sie die Git Rebase Dokumentation, um zu verstehen, wie sich eine '–interaktive oder -i'-Rebase von einer regulären Rebase unterscheidet.

Festgeschriebene nicht verwandte Änderungen in einem einzigen Festschreiben

In diesem Fall müssen Sie ein altes vergrabenes Commit in mehrere logische Commits aufteilen.
Syntax: Git Rebase -i
Befehl: Git Rebase -i fb0a90e
Im Rebase-Editor müssen Sie die Festschreibungs-ID e7aa9a5 auswählen und in 'Bearbeiten' anstelle von 'Auswählen' ändern.

nicht verwandte Änderungen - häufige Git-Fehler -Edureka

Sie befinden sich jetzt in der Projektversion von commit id-e7aa9a5. Setzen Sie zunächst den Commit-Verlauf und den Staging-Bereich auf den vorherigen Commit-Befehl zurück:git reset HEAD ~ 1
Zweitens bearbeiten + Stage + Commit die Dateien einzeln
Befehle:
git add code && git commit -m 'Hinzufügen von Anfangscodes'
git neuen Code hinzufügen && git commit -m 'Neuen Code hinzufügen'

Drittens setzen Sie die Rebase fort und beenden Sie.

Befehl ::Git Rebase - weiter
Viertens: Zeigen Sie den Verlauf mit zusätzlichen Commits an.

Befehl: geh hist

Aufteilen von Commit in mehrere mithilfe von Rebase - häufige Git-Fehler - Edureka

Ändern Sie die Autoren-E-Mail in allen Commits in allen Filialen

Ich habe meine Projektdateien schon lange in git versioniert und festgeschrieben, aber bis jetzt ist mir nie aufgefallen, dass meine E-Mail-ID in meinen Commit-Verlaufsprotokollen kompromittiert wurde, die sogar in Remote-Repositorys veröffentlicht werden. Nun, dies kann jedem passieren, wenn Sie die Konfigurationen in der Datei '.gitconfig' zum ersten Mal eingerichtet haben umschreiben die Umgebungsvariablen, die wir beim Erstellen eines Festschreibungsobjekts bereitstellen.

Zuerst bekomme ich die Liste von E-Mail-IDs um zu entscheiden, welche ich ändern möchte:
Befehl: Git-Protokoll --all --pretty = Format: '% an% d'–Dies druckt den Autorennamen (Referenzname / Filialname).

Zweitens renne ich durch jedes Commit in jedem Zweig und schreiben Sie das Festschreibungsobjekt mit der neuen E-Mail-ID neu
Befehl:
git filter-branch --env-filter '
if ['$ GIT_AUTHOR_NAME' = 'divya']
dann
GIT_AUTHOR_EMAIL = 'divya@github.com'
Sein
' -- --alle

Fundsachen

Angenommen, Sie haben eine bestimmte Datei verloren und erinnern sich nicht an ihren Namen, können aber bestimmte Wörter in der Datei abrufen. In diesem Fall können Sie die folgenden Schritte ausführen:
Schritt 1: Listen Sie alle Commits auf, die jemals den Datei-Snapshot mit dem gesuchten Muster enthalten haben
Befehl ::git rev-list --all | xargs git grep -i 'Zeitstempel'



Schritt 2 : Erstellen Sie aus dieser hervorgehobenen Commit-ID einen neuen Zweig 'Lost-Found'
Syntax: git checkout -b verloren gefunden d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f

Ich habe vergessen, welcher Zweig meine Commit-ID hat

Manchmal möchten Sie, nachdem Sie eine fehlerhafte Festschreibungs-ID entdeckt haben, auch alle Zweige kennen, auf denen diese Festschreibung festgelegt ist, damit Sie sie alle beheben können. Das Überprüfen der Historie jeder Niederlassung ist in einem großen Projekt mit mehreren Niederlassungen nicht sehr praktisch.

Ein schlechtes Commit in meiner Navigationserstellungsanwendung hat den Code einmal gebrochen. Dann habe ich das verwendet Befehl 'git bisect' zum Erkennen der festgeschriebenen Festschreibungs-ID gefolgt von derBefehl:Git-Zweig - enthältum die Zweige mit diesem schlechten Commit aufzulisten.

Jetzt, da ich alle Zweige kenne, die noch einen schlechten Commit haben, kann ich diesen Änderungssatz entweder zurücksetzen oder zurücksetzen.

verknüpfter Listencode in c

Löschen Sie ein Commit aus dem Verlauf

Manchmal habe ich das Bedürfnis, einfach ein Commit aus der Geschichte zu streichen und keine Spur davon zu hinterlassen. Ich würde Ihnen nicht empfehlen, diesen Stunt in einem gemeinsam genutzten Zweig zu versuchen, sondern nur in Ihrem lokalen Zweig.
Syntax: Git Rebase -i
Befehl ::Git Rebase -i 93859d8
Ersetzen Sie im Rebase-Editor-> 'Bearbeiten' durch 'Löschen' für die hervorgehobene Commit-ID: 69f4813

In einigen Fällen kann dieses Umschreiben zu Konflikten führen. Sie müssen Konflikte lösen und dann fortfahren.

Warnung : Dies ist ein gefährlicher Befehl, da dieser den Verlauf neu schreibt und möglicherweise Daten verliert. Ein solcher Zweig unterscheidet sich von seinem Remote-Gegenstück und muss mit dem verschoben werden--Machtoder- Force-with-LeaseMöglichkeit.

Schob einen falschen Zweig zur Fernbedienung

Hier ist, was ich tun möchte - ich möchte ein löschen Remote-Zweig und hören Sie auch auf, es von meiner lokalen Niederlassung aus zu verfolgen. “Git PushBefehl bei Verwendung mit dem--löschenOption löscht den Remote-Zweig Auf diese Weise erhalte ich die lokale Kopie des geklonten Projekts.

Git-Klon https://github.com/greets/myProj.git
cd myProj


Sobald der Remote-Zweig gelöscht ist, müssen andere im gemeinsam genutzten Repo ihre Remote-Referenzen mit dem aktualisieren und aktualisieren--PflaumeOption zum Löschen der fehlenden Objektreferenzen:git fetch --prune -v origin

In diesem Beitrag habe ich einige der häufigsten Fehler oder Änderungen erwähnt, die Git Ihnen bei der Behebung helfen kann. Jeder Code ist einzigartig und auf seine Weise entwickelt. Daher gibt es auch verschiedene Möglichkeiten, ein Problem anzugehen und zu beheben. Sie können sich immer an den Beamten wenden Git-Dokumentation um zu verstehen, wie verschiedene Git-Befehle Ihren Quellcode schützen und wie Sie die Befehle bestmöglich nutzen können.

Nachdem Sie die häufigsten Git-Fehler verstanden haben, lesen Sie dies von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka DevOps-Zertifizierungskurs hilft den Lernenden, DevOps zu verstehen und Kenntnisse in verschiedenen DevOps-Prozessen und -Tools wie Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack und GIT zu erwerben, um mehrere Schritte in SDLC zu automatisieren.

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieser 'häufigen Git-Fehler' und wir werden uns bei Ihnen melden