Entfernen ungepushte Commits in Git
In diesem Tutorial erfahren Sie, wie Sie ungepushte Commits in Git entfernen.
Git wird in einer kollaborativen Entwicklungsumgebung verwendet, um die Änderungen zu verfolgen, die an Dateien im Projektverzeichnis vorgenommen wurden. Git verwendet Commits, um sowohl die lokalen als auch die Remote-Git-Repository-Änderungen zu verfolgen.
Möglicherweise möchten Sie die nicht gepushten Commits von Zeit zu Zeit aus dem lokalen Git-Repository entfernen.
Entfernen Sie die ungepushten Commits mit dem Befehl git reset
. Wir werden dies an einem Beispiel veranschaulichen.
Verwenden Sie den Befehl git reset
, um ungepushte Commits in Git zu entfernen
Wann immer wir Änderungen an das Projektverzeichnis übertragen möchten, können wir die Änderungen mit den Befehlen git add
und git commit
übertragen.
Bei Verwendung des Befehls git commit
wird ein Commit im lokalen Git-Repository erstellt. Wir können dann den Befehl git push
verwenden, um die Commits im lokalen Git-Repository in das entfernte Git-Repository zu pushen.
Manchmal stellen wir vielleicht fest, dass wir die Commits nicht in das entfernte Repository pushen wollen und uns gerade an das lokale Repository übergeben haben. In solchen Fällen können wir den Befehl git reset
verwenden, um diese letzten Commits im lokalen Git-Repository aufzuheben oder zu entfernen.
Der git reset
ist ein Befehl, der verwendet wird, um lokale Änderungen am Zustand eines Git-Repositorys rückgängig zu machen.
Angenommen, wir haben eine Änderung am Arbeitsverzeichnis. Wir können den Status der Änderung mit dem Befehl git status
anzeigen.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: mynotes.txt
Wir können sehen, dass die Datei mynotes.txt
geändert wurde und zum Commit geeignet ist.
Um die Änderungen zu übernehmen, müssen wir zuerst den Befehl git add
verwenden, um die Änderungen zum Staging-Index des lokalen Git-Repositorys hinzuzufügen. Wir müssen den Befehl git add
wie folgt ausführen.
$ git add .
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: mynotes.txt
Wenn wir also den Befehl git status
verwenden, können wir sehen, dass die Änderungen jetzt inszeniert sind.
Wir können die Änderungen an das lokale Git-Repository übergeben. Wir müssen den Befehl git commit
verwenden, um einen Commit für die inszenierten Änderungen zu erstellen.
Wir führen den Befehl git commit
wie folgt aus.
$ git commit -m "updated mynotes"
[main e1b08a5] updated mynotes
1 file changed, 1 insertion(+)
Jetzt führen wir den Befehl git status
erneut aus, um den Status anzuzeigen.
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
Wir können jetzt sehen, dass der lokale Zweig im lokalen Repository dem entfernten Git-Repository-Zweig origin/main
um einen Commit voraus ist.
Wir können den Befehl git push
verwenden, um den Commit in das entfernte Git-Repository zu pushen. Aber anstatt das zu tun, entfernen wir den ungepushten Commit mit dem Befehl git reset
wie folgt.
$ git reset --soft HEAD~1
Der Befehl git reset
mit der Option --soft
entfernt den ungepushten Commit aus dem lokalen Git-Repository, behält aber die lokalen Änderungen bei. Der HEAD~1
gibt den Befehl git reset
an, um nur einen letzten Commit zu entfernen.
Wir werden nun den git status
ausführen, um den Status des Repositorys wie folgt zu überprüfen.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: mynotes.txt
Somit können wir sehen, dass der ungepushte Commit nicht mehr vorhanden ist. Die Modifikationen sind jedoch noch inszeniert.
Die Verwendung der Option --hard
anstelle der Befehlsoption --soft
mit dem Befehl git reset
hätte den letzten Commit gelöscht, wie durch HEAD~1
angegeben, und die lokalen Änderungen vorgenommen.
Wir können den Befehl git reset
mit der Option --hard
ausführen.
$ git reset --hard HEAD~1
Dadurch werden auch die nicht nachverfolgten Dateien oder Verzeichnisse zusammen mit den nachverfolgten Änderungen gelöscht. Verwenden Sie es daher mit Vorsicht, oder wir könnten die gesamte geleistete Arbeit verlieren.
Daher haben wir gelernt, nicht gepushte Commits im lokalen Git-Repository zu entfernen.
Für weitere Informationen, besuchen Sie bitte:
Verwandter Artikel - Git Reset
- Eine Git-Zusammenführung mit Konflikten rückgängig machen
- Machen Sie den Development-Branch mit dem Master-Branch identisch
- Unterschied zwischen den Git-Befehlen `Reset`, `Revert` und `Checkout`.
- Unterschied zwischen Git RM --Cached und Git Reset File
- Verschiedene Methoden zum Entfernen lokaler Git-Änderungen
- Änderungen in Git rückgängig machen