Retten Sie den Tag mit Git und entfernen Sie ihn aus dem Commit-Verlauf

Hast du beim Arbeiten mit Git schon einmal Fehler bei Git-Commits erlebt oder Probleme gehabt? Vielleicht wurde aus Versehen ein geheimer Schlüssel oder sensible Daten gespeichert. Glücklicherweise kannst du deine Dateien mit Git verarbeiten, aus dem Commit entfernen und die Historie korrigieren.

Wenn du mehrere Commits gemacht oder ein Repository mit bereits bestehender Commit-Historie geklont hast, möchtest du wahrscheinlich zurückblicken und sehen, welche Commits gemacht wurden. In diesem Tutorial erfährst du, wie du einen Eintrag aus deiner Git-Historie entfernen kannst.

Lesen Sie weiter und retten Sie den Tag mit Git!

Voraussetzungen

Dieses Tutorial enthält schrittweise Anleitungen. Stelle sicher, dass du Folgendes bereit hast, wenn du mitmachen möchtest:

  • A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
  • Git Bash – Dieses Tutorial verwendet Git Bash 2.36.

Entfernen einer Datei aus dem Git-Commit

Wenn du in einem Git-Team arbeitest, machst du täglich Hunderte von Commits. Daher besteht eine hohe Wahrscheinlichkeit, dass du einen bestimmten Commit rückgängig machen musst, zum Beispiel aufgrund einer falschen Datei oder mehrerer Dateien. Diese Anforderung wird in der Regel durch eine Änderung im Code oder in der Konfiguration verursacht und wird zu einem Problem.

Um dieses Problem zu lösen, musst du die Datei oder mehrere Dateien aus dem Git-Commit entfernen, indem du Git-Befehle ausführst. Du wirst eines der beliebten Tools verwenden, um eine einzelne Datei aus dem Git-Commit zu entfernen – das Git Bash-Tool.

1. Öffnen Sie das Git Bash-Werkzeug auf Ihrem Windows-Rechner.

2. Führen Sie anschließend den folgenden Befehl aus, um einen Repository-Ordner zu erstellen und zu diesem Ordner zu wechseln. Diese Befehle geben keine Ausgabe im Terminal aus. Ersetzen Sie jedoch unbedingt ~/Desktop/Repository/repo1 durch Ihren bevorzugten Ordnerpfad und -namen.

# Erstellt den Repository-Ordner und den Unterordner repo1
mkdir -p ~/Desktop/Repository/repo1
# Ändert das Arbeitsverzeichnis zu repo1
cd ~/Desktop/Repository/repo1

3. Führen Sie die folgenden Befehle aus, um Ihr Repository zu initialisieren und zwei Textdateien mit den Namen test1.txt und test2.txt zu erstellen.

# Initialisiert das lokale Repository (erstellt einen versteckten .git-Ordner)
git init
# Erstellt zwei Textdateien
touch test_file1.txt test_file2.txt
Initializes the local repository

4. Führen Sie nun den folgenden Befehl aus, um den Status des Git-Commits zu überprüfen.

git status

Nach Ausführung des Befehls werden Sie feststellen, dass die Commits nicht verfolgt und noch nicht durchgeführt wurden, wie unten gezeigt.

Checking the status of Git commits on the Git terminal

5. Führen Sie den Befehl git add unten aus, um die beiden Textdateien, die Sie im Schritt drei erstellt haben (test_file1.txt und test_file2.txt), Ihrem lokalen Repository hinzuzufügen.

Dieser Befehl gibt keine Ausgabe aus, fügt jedoch die Dateien hinzu, ohne sie in das Remote-Repository zu übertragen.

git add .

6. Führen Sie anschließend den unten stehenden Befehl git commit aus, damit Git den Fortschritt und die Änderungen, die Sie im lokalen Repository vorgenommen haben, verfolgt.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

7. Führen Sie nach dem Commit den unten stehenden Befehl aus, um eine bestimmte Datei (test_file2.txt) aus dem Git-Commit zu entfernen.

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. Führen Sie abschließend den unten stehenden git status-Befehl erneut aus, um den Status des Repositories zu überprüfen.

git status

Wie Sie unten sehen können, wurde die Datei aus dem Staging-Bereich (dem Git-Commit) entfernt und zeigt die Datei (test_file2.txt) unter Untracked files an.

Verifying the Removed Git Commit (test_file2.txt)

Entfernen aller kürzlich committeten Dateien

Sie haben gerade gelernt, eine bestimmte Datei aus dem Git-Commit zu entfernen. Aber in der Regel müssen Sie mehrere Dateien löschen, und Git ist mit dem git reset-Befehl dafür gerüstet. Der git reset-Befehl ist ein komplexes, aber gleichzeitig vielseitiges Werkzeug zum Rückgängigmachen von Änderungen im Repository.

Um zu sehen, wie der git reset funktioniert, werden Sie ein paar Dateien committen und dann die Änderungen zurücksetzen, um kürzlich committete Dateien im Git-Commit zu entfernen:

1. Erstellen Sie zwei neue Textdateien mit den Namen test_file3.txt und test_file4.txt im Ordner ~/Desktop/Repository/repo1.

touch test_file3.txt test_file4.txt

2. Führen Sie anschließend den git add-Befehl unten aus, der keine Ausgabe liefert, aber die neuen Textdateien zu Ihrem lokalen Repository (~/Desktop/Repository/repo1) hinzufügt.

git add .

3. Führen Sie den unten stehenden git commit-Befehl aus, um die Dateien zu committen, damit Git den Fortschritt und die Änderungen im Repository verfolgt.

git commit -m "Adding two more files"
Committing Changes to the Repository

4. Führen Sie nun den unten stehenden Befehl aus, um den Status Ihres lokalen Repositories zu überprüfen.

git status

Wie Sie unten sehen können, zeigt die Ausgabe die Meldung „nothing to commit“, was darauf hindeutet, dass alles im Repository an seinem Platz ist.

Checking the Status of Git Commits

5. Führen Sie als Nächstes den unten stehenden Git Reset-Befehl aus, um die kürzlich in Schritt drei gemachten Commits rückgängig zu machen. Dieser Befehl liefert keine Ausgabe, entfernt jedoch die Dateien test_file3.txt und test_file4.txt.

git reset --soft HEAD~1

Sie können auch git reset –soft HEAD^ verwenden, um alle Dateien zu entfernen, die bis jetzt committet wurden.

6. Führen Sie als Nächstes den Git Status-Befehl unten aus, um den Status des Repositories zu überprüfen.

git status

Die Ausgabe unten zeigt Dateien test_file3.txt und test_file4.txt, die committet werden müssen. Diese Ausgabe zeigt die Dateien an, die aus dem Git-Commit entfernt werden müssen.

Verifying the Recent Commits were Removed

Entfernen bestimmter Commits aus der Git-Historie

Das Entfernen aller committeten Dateien funktioniert einwandfrei, wenn Sie mit einem sauberen Arbeitsbereich beginnen möchten. Aber was ist, wenn Sie nur einen bestimmten Commit entfernen müssen? Der git revert Befehl erledigt das, solange Sie die ID des Commits kennen.

In dem letzten Schritt des Abschnitts „Alle kürzlich committeten Dateien entfernen“ haben Sie bemerkt, dass die Commits nicht committet, sondern geändert wurden. Jetzt werden Sie die Änderungen committen, um den git revert Befehl in Aktion zu sehen.

Führen Sie den git commit Befehl unten aus, um die kürzlich gemachten Änderungen in Ihrem lokalen Repository zu committen.

git commit -m "Hello, I am committing those two files again"

Nach Ausführung des Befehls werden Sie feststellen, dass beide Textdateien erneut committed sind, und die Commit-ID lautet 0315b85,, wie unten gezeigt.

Committing the Changes in the Local Repository

Führen Sie nun den git revert-Befehl unten aus, um den Commit rückgängig zu machen, den Sie im vorherigen Schritt durchgeführt haben. Stellen Sie sicher, dass Sie 0315b85 durch die ID Ihres Commits ersetzen.

git revert 0315b85

Unten sehen Sie, dass die zwei kürzlich committeten Dateien gelöscht wurden.

Reverting the Changes in the Local Repository

Löschen eines Verzeichnisses aus dem Git Commit-Verlauf

Bis jetzt wissen Sie bereits, wie Sie eine committete Datei löschen, aber wie sieht es mit einem Verzeichnis aus? Das Löschen eines Verzeichnisses aus einem Git-Commit ist ähnlich wie das Löschen von Dateien.

1. Führen Sie die folgenden Befehle aus, die keine Ausgabe liefern, aber folgendes ausführen:

  • Erstellen Sie einen Ordner mit dem Namen myfolder in Ihrem lokalen Repository (~/Desktop/Repository/repo1).
  • Erstellen Sie eine Datei mit dem Namen l.txt im Ordner ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. Führen Sie anschließend die git-Befehle aus, um den neuen Ordner (~/Desktop/Repository/repo1/myfolder) zu Ihrem lokalen Repository hinzuzufügen.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

3. Führen Sie den folgenden git rm-Befehl aus, um den Ordner (myfolder), den Sie im zweiten Schritt committet haben, zu entfernen.

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. Führen Sie schließlich den git status-Befehl aus, um den Status des Repositorys zu überprüfen und zu sehen, ob der Ordner entfernt wurde.

git status

Unten sehen Sie, dass das gesamte Verzeichnis (myfolder) erfolgreich gelöscht wurde, zusammen mit der Datei l.txt darin.

Verifying the Folder (myfolder) Has Been Removed Successfully

Abschluss

Im Rahmen dieses Tutorials haben Sie gelernt, wie Sie mit Git-Commits arbeiten, z. B. das Entfernen eines bestimmten Commits, einer Datei oder mehrerer Dateien. Sie haben auch das Löschen eines gesamten Ordners im lokalen Repository und das Commiten der Änderungen behandelt.

Zu diesem Zeitpunkt können Sie selbstbewusst Änderungen in Ihrem Repository committen und Commits, die Sie für unnötig halten, ohne Probleme entfernen.

Mit dem, was Sie in diesem Tutorial gelernt haben, welche Methode halten Sie für ausgezeichnet, um mit Commits für Ihr Team zu arbeiten?

Source:
https://adamtheautomator.com/git-and-remove-from-commit/