Entfernen ungepushte Commits in Git

Azhar Bashir Khan 31 Mai 2022
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:

  1. git-reset
  2. git-reset

Verwandter Artikel - Git Reset