Erfahre, wie du Änderungen in Git mit Bitbucket Cloud rückgängig machen kannst
Ziel
Erfahre, wie du Änderungen auf deinem lokalen Rechner und einem Bitbucket Cloud-Repository rückgängig machst, während du mit anderen zusammenarbeitest.
Übersicht zur Aufgabe
In diesem Tutorial behandelte Befehle:
- git revert, git reset, git log und git status
Zeit
40 Minuten
Zielpublikum
Dieses Tutorial setzt die Vertrautheit mit folgenden Git-Befehlen voraus: git clone
, git commit
, git pull
und git push
.
Jeder macht mal Fehler und nicht jeder Push-Vorgang ist perfekt. Deshalb zeigt dir dieses Tutorial, wie du die gängigsten git-Funktionen für das sichere Rückgängigmachen von Änderungen verwendest.
Dieses Tutorial setzt voraus, dass dir die folgenden git-Befehle bekannt sind:
Wenn du diese Befehle nicht kennst, können wir dir dabei helfen, git mit Bitbucket Cloud kennenzulernen. Danach kannst du zu diesem Tutorial zurückkehren und erfahren, wie du Änderungen rückgängig machst. Diese git
-Befehle sind auf Windows- oder Unix-Umgebungen anwendbar. Das Tutorial nutzt Unix-Befehlszeilentools für Anweisungen zur Navigation im Dateisystem.
Rückgängigmachen von Änderungen auf deinem lokalen Rechner
Wenn die Änderung, die du rückgängig machen möchtest, auf deinem lokalen System ist und noch nicht auf ein Remote-Repository gepusht wurde, gibt es im Wesentlichen zwei Wege, um sie rückgängig zu machen:
Befehl | Definitionen |
---|---|
| Definitionen Ein Befehl zum Rückgängigmachen, aber kein herkömmlicher Rückgängig-Vorgang. Anstatt den Commit zu entfernen wird ermittelt, wie Änderungen im Commit umgekehrt werden können. Danach wird einem neuen Commit der umgekehrte Inhalt angefügt. So wird verhindert, dass der Verlauf von Git verkürzt wird, was für die Integrität deines Überprüfungsverlaufs und für eine zuverlässige Zusammenarbeit wichtig ist. |
| Definitionen
Ein vielseitiger
Eine umfassende Beschreibung zur Funktionsweise von |
Lösung anzeigen
Git-Tutorials für Fortgeschrittene
Zugehöriges Material
Git-Befehle
Im weiteren Verlauf des Tutorials wirst du einige andere git-Befehle kennenlernen, bei denen es um das Rückgängigmachen von Änderungen geht. Fangen wir also an.
Ein Repository forken
Erstellen wir zunächst ein einzigartiges Repository mit dem Code des Originals. Dieser Vorgang wird als Forking eines Repositorys bezeichnet. Forking ist ein erweiterter git
-Prozess, der dann aktiviert wird, wenn ein freigegebenes Repository mit einem Drittanbieter-Hosting-Service wie Bitbucket gehostet wird.
1. Klicke auf die folgende URL oder gib sie ein: https://bitbucket.org/atlassian/tutorial-documentation-tests/commits/all.
2. Klicke auf das +-Symbol auf der linken Seitenleiste und wähle dann Fork this repository (Dieses Repository forken) aus. Prüfe den Dialog und klicke auf Fork repository (Repository forken).
3. Dadurch solltest du zur Übersicht über das neue Repository weitergeleitet werden.
4. Klicke auf das "+"-Symbol und wähle Clone this repository (Dieses Repository klonen) aus.
5. Klone das Repository auf deinem Computer.
6. Navigiere zu dem Verzeichnis, das das geklonte Repository enthält.
Da du jetzt ein Repository mit Code und einen echten Verlauf auf deinem lokalen System hast, kannst du mit der Rückgängigmachung von Änderungen beginnen.
Auffinden von Änderungen auf deinem lokalen System
Du musst die Änderung, die du rückgängig machen möchtest, finden und referenzieren können. Hierzu durchsuchst du die Commit-Benutzeroberfläche in Bitbucket. Alternativ kannst du bestimmte Änderungen mit diversen Befehlszeilentools suchen.
git status
Du musst die Änderung, die du rückgängig machen möchtest, finden und referenzieren können. Hierzu durchsuchst du die Commit-Benutzeroberfläche in Bitbucket. Alternativ kannst du bestimmte Änderungen mit diversen Befehlszeilentools suchen.
$ git status
On branch main
Your branch is up-to-date with 'origin/main'.
nothing to commit, working tree clean
Die hier dargestellte Ausgabe von git status
zeigt, dass beim Haupt-Branch alles auf dem aktuellen Stand ist und es keine ausstehenden Änderungen gibt, die committet werden müssen. Im nächsten Beispiel werden wir einige Änderungen am Repository vornehmen und es im Status "Ausstehende Änderungen" untersuchen. Das bedeutet, dass es Änderungen an Dateien in dem Repository auf deinem lokalen System gibt, die du nicht für das Hinzufügen zum Projektverlauf vorbereitet (oder staged) hast.
Öffne für das nächste Beispiel zunächst die Datei myquote2.html
. Nimm einige Änderungen an den Inhalten von myquote2.html
vor und speichere und beende die Datei. Wir führen anschließend noch einmal git status
aus, um das Repository in diesem Status zu untersuchen.
$ 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 checkout -- <file>..." to discard changes in working directory)
Modified: myquote2.html
no changes added to commit (use "git add" and/or "git commit -a")
--
Die hier dargestellte Ausgabe zeigt, dass das Repository ausstehende Änderungen an myquote2.html
hat. Und das ist auch gut so. Falls die Änderung, die du rückgängig machen möchtest, wie im obigen Beispiel gezeigt noch nicht zur Staging-Umgebung hinzugefügt wurde, musst du lediglich die Datei bearbeiten und weiter machen wie gehabt. Git beginnt erst mit der Nachverfolgung einer Änderung, wenn du sie zum Staging-Bereich hinzufügst und dann zum Projektverlauf committest.
Kommen wir jetzt zum Rückgängigmachen der Änderungen, die wir an myquote2.html
vorgenommen haben. Wir haben es hier mit einem vereinfachten Beispiel mit minimalen Änderungen zu tun, deshalb stehen uns dafür zwei Methoden zur Verfügung. Wenn wir git checkout myquote2.html
ausführen, wird das Repository myquote2.html
auf die zuvor committete Version zurückgesetzt. Alternativ können wir git reset --hard
ausführen, wodurch das gesamte Repository auf den letzten Commit zurückgesetzt wird.
git log
Der Befehl git log
wird verwendet, um den Projektverlauf aufzurufen, ihn zu filtern und nach bestimmten Änderungen zu suchen. Mit git status
kannst du das Arbeitsverzeichnis und die Staging-Umgebung anzeigen, während git log
ausschließlich auf den Commit-Verlauf beschränkt ist.
Dasselbe Protokoll für Commit-Verläufe findet sich auch in der Bitbucket-Benutzeroberfläche, wenn in einem Repository auf die Ansicht "Commits" zugegriffen wird. Die Ansicht mit Commits für unser Demo-Repository findest du auf: https://bitbucket.org/dans9190/tutorial-documentation-tests/commits/all. Diese Ansicht enthält eine ähnliche Ausgabe wie das git log
-Befehlszeilentool. Dieses kann für die Suche und Identifizierung von Commits verwendet werden, die rückgängig gemacht werden sollen.
Im folgenden Beispiel siehst du verschiedene Dinge im Verlauf, aber jede Änderung ist im Grunde ein Commit, deshalb müssen wir diesen suchen und rückgängig machen.
$ git status
On branch main
Your branch is up-to-date with 'origin/main'.
nothing to commit, working tree clean
$ git log
commit 1f08a70e28d84d5034a8076db9103f22ec2e982c
Author: Daniel Stevens <dstevens@atlassian.com>
Date: Wed Feb 7 17:06:50 2018 +0000
Initial Bitbucket Pipelines configuration
commit 52f823ca251a132225dd1cc18ad768de8d336e84
Author: Daniel Stevens <dstevens@atlassian.com>
Date: Fri Sep 30 15:50:58 2016 -0700
repeated quote to show how a change moves through the process
commit 4801b87c2147dce83f1bf31acfcffa6cb1d7e0a5
Merge: 1a6a403 3b29606
Author: Dan Stevens [Atlassian] <dstevens@atlassian.com>
Date: Fri Jul 29 18:45:34 2016 +0000
Merged in changes (pull request #6)
Changes
Sehen wir uns einen der Commits in der Liste einmal etwas genauer ein:
commit 52f823ca251a132225dd1cc18ad768de8d336e84
Author: Daniel Stevens <dstevens@atlassian.com>
Date: Fri Sep 30 15:50:58 2016 -0700
repeated quote to show how a change moves through the process
Du kannst erkennen, dass jede Commit-Nachricht aus vier Elementen besteht:
Element | Beschreibung |
---|---|
Commit-Hash | Beschreibung Eine alphanumerische Zeichenfolge (mit SHA-1 verschlüsselt), die eine spezifische Änderung identifiziert |
Autor | Beschreibung Die Person, die die Änderung committet hat |
Datum | Beschreibung Das Datum, an dem die Änderung zum Projekt committet wurde |
Commit-Nachricht | Beschreibung Eine Textzeichenfolge, die die Änderung(en) beschreibt. Profitipp: Schreibe kurze, anschauliche Commit-Nachrichten, um ein harmonischeres Arbeits-Repository für alle zu erstellen. |
Auffinden eines spezifischen Commits
Die Änderung, die du rückgängig machen möchtest, liegt sehr wahrscheinlich etwas weiter zurück im Projektverlauf, der ziemlich umfangreich sein kann. Deshalb lernen wir einige einfache Vorgehensweisen mit git log
, mit denen es möglich ist, eine bestimmte Änderung zu finden.
1. Gehe zu deinem Terminalfenster und navigiere mit dem Befehl cd
(change directory; Verzeichnis ändern) zur obersten Ebene deines lokalen Repositorys.
$ cd ~/repos/tutorial-documentation-tests/
Gib den Befehl git log --oneline
ein. Durch Hinzufügen des Parameters --oneline
wird jeder Commit auf einer eigenen Zeile angezeigt, damit du in deinem Terminal mehr vom Verlauf siehst.
Durch Drücken auf die Taste q kannst du jederzeit das Commit-Protokoll verlassen und zur Eingabeaufforderung zurückkehren.
Das Ergebnis sollte so ähnlich wie im folgenden Beispiel aussehen:
$ git log --oneline
1f08a70 (HEAD -> main, origin/main, origin/HEAD) Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 (origin/changes) myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
...
2. Drücke die Taste q, um zur Eingabeaufforderung zurückzukehren.
3. Finde den Commit mit dem Hash c5826da
und weitere Änderungen in der Liste, die nach dem Befehl git log
ausgegeben wurde. Irgendjemand hat keine beschreibende Commit-Nachricht geschrieben, deshalb müssen wir selbst herausfinden, ob er die benötigten Änderungen enthält.
4. Hebe den Commit-Hash c5826da
hervor und kopiere ihn aus den git log
-Ergebnissen in dein Terminalfenster.
5. Gib git show
ein und füge den kopierten Commit-Hash ein bzw. übertrage ihn und drücke die Eingabetaste. Daraufhin solltest du in etwa Folgendes sehen:
$git show c5826daeb6ee3fd89e63ce35fc9f3594fe243605
commit c5826daeb6ee3fd89e63ce35fc9f3594fe243605
Author: Daniel Stevens <dstevens@atlassian.com>
Date: Tue Sep 8 13:50:23 2015 -0700
more changes
diff --git a/README.md b/README.md
index bdaee88..6bb2629 100644
--- a/README.md
+++ b/README.md
@@ -11,12 +11,7 @@ This README would normally document whatever steps are necessary to get your app
### How do I get set up? ###
* Summary of set up
-* Configuration
-* Dependencies
-* Database configuration
-* How to run tests
-* Deployment instructions
-* more stuff and things
:
Die Aufforderung unten wird immer weiter ausgefüllt, bis die gesamte Änderung angezeigt wird. Drücke q, um zur Eingabeaufforderung zu wechseln.
Filtern von git log für die Suche nach einem spezifischen Commit
Filter | Funktionsweise | Beispiel-Befehl | Ausgabe |
---|---|---|---|
| Funktionsweise Beschränkt die Anzahl der angezeigten Commits. | Beispiel-Befehl | Ausgabe Die 10 neuesten Commits im Verlauf |
| Funktionsweise Beschränkt die angezeigten Commits auf den entsprechenden Zeitrahmen.Du kannst auch | Beispiel-Befehl | Ausgabe Alle Commits nach dem 4. Juli 2017 |
| Funktionsweise Führt alle Commits auf, deren Autor diesen Namen hat. | Beispiel-Befehl | Ausgabe Alle Commits, bei denen als Autorenname "Alana" im Namensfeld steht |
| Funktionsweise Gibt Commits mit einer Commit-Nachricht aus, die zur eingegebenen Zeichenfolge passt. | Beispiel-Befehl | Ausgabe Alle Commits, die HOT- als Textzeichenfolge in ihren Nachrichten enthalten |
Dies war ein sehr kurzer Überblick über den git log
-Befehl. Wenn dir die Arbeit damit gefällt, solltest du dir unbedingt das git log-Tutorial für Fortgeschrittene ansehen.
Rückgängigmachen von Änderungen mit git reset
Für den Anfang machen wir den letzten Commit im Verlauf rückgängig. In diesem Fall gehen wir davon aus, dass du die CI/CD-Pipelines von Bitbucket gerade aktiviert und dann festgestellt hast, dass das Skript nicht ganz in Ordnung ist.
1. Gib git log --oneline
in dein Terminalfenster ein.
2. Kopiere den Commit-Hash für den zweiten Commit in das log: 52f823c
und drücke dann q, um das Protokoll zu verlassen.
3. Gib git reset --soft 52f823c
im Terminalfenster ein. Wenn die Eingabe erfolgreich war, sollte der Befehl im Hintergrund ausgeführt werden. Das war's, du hast die erste Änderung rückgängig gemacht. Sehen wir uns nun das Ergebnis dieser Aktion an.
4. Gib git status
im Terminalfenster ein, dann wird der Commit als rückgängig gemacht angezeigt und ist jetzt eine nicht committete Änderung. Dies sollte in etwa so aussehen:
$ git status
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: bitbucket-pipelines.yml
5. Gib git log --oneline
in dein Terminalfenster ein. Daraufhin solltest du in etwa Folgendes sehen:
$ git log --oneline
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 (origin/changes) myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
6. Du kannst erkennen, dass der neue HEAD
des Branch der Commit 52f823c
ist, und das ist genau das, was du wolltest.
7. Drücke q, um das Protokoll zu verlassen. Lass das Terminalfenster geöffnet, damit wir nach dieser einfachen Zurücksetzung etwas Komplexeres ausprobieren können.
Rückgängigmachen von mehreren Änderungen mit git reset
Für den Anfang machen wir den letzten Commit im Verlauf rückgängig. In diesem Fall gehen wir davon aus, dass du die CI/CD-Pipelines von Bitbucket gerade aktiviert und dann festgestellt hast, dass das Skript nicht ganz in Ordnung ist.
1. Gib git log --online
ein.
2. Kopiere den Commit-Hash 1a6a403
(die Datei "myquote", die online mit Bitbucket bearbeitet wurde). Dabei handelt es sich um den Commit unterhalb der Pull-Anfrage Nr. 6, die die Änderungen enthält, die wir rückgängig machen möchten.
3. Gib git reset 1a6a403
im Terminalfenster ein. Die Ausgabe sollte wie folgt aussehen:
$ git reset 1a6a403
Unstaged changes after reset:
M README.md
M myquote2.html
Du kannst erkennen, dass die Änderungen jetzt den Status "nicht committet" haben. Das bedeutet, dass wir mehrere Änderungen sowohl aus dem Verlauf des Projekts als auch der Staging-Umgebung entfernt haben.
4. Gib git status
im Terminalfenster ein. Die Ausgabe sollte wie folgt aussehen:
$ git status
On branch main
Your branch is behind 'origin/main' by 6 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
modified: myquote2.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
bitbucket-pipelines.yml
no changes added to commit (use "git add" and/or "git commit -a")
Du kannst erkennen, dass die erste von uns rückgängig gemachte Änderung (die Datei bitbucket-pipelines.yml
) von git
überhaupt nicht mehr verfolgt wird. Das liegt daran, dass der Aufruf von git reset
Änderungen sowohl aus dem Head des Branch als auch aus der Nachverfolgungs- und Indexumgebung von git
entfernt. Der zugrundeliegende Prozess ist etwas komplexer, weshalb wir ihn an dieser Stelle nicht abdecken können. Du kannst dich aber im Tutorial zu git reset
weiter in das Thema einlesen.
5. Gib git log --oneline
in dein Terminalfenster ein.
1a6a403 myquote edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'main' into new-feature2 Merge branch especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
879f965 adding to the quote file
8994332 Merged in HOT-235 (pull request #2)
b4a0b43 removed sarcastic remarks because they violate policy.
b5f5199 myquote2.html created online with Bitbucket
b851618 adding my first file
5b43509 writing and using tests
Die Protokollausgabe zeigt jetzt, dass der Commit-Verlauf ebenfalls geändert wurde und mit dem Commit "1a6a403" beginnt. Zu Demonstrationszwecken nehmen wir an, dass wir jetzt die eben durchgeführte Zurücksetzung wieder rückgängig machen wollen. Nach einiger Überlegung sind wir zu dem Schluss gekommen, dass wir die Inhalte der Pull-Anfrage Nr. 6 doch behalten wollen.
Pushen von Zurücksetzungen zu Bitbucket
Git resets
sind eine der wenigen Rücksetzmethoden, die git
bietet. Zurücksetzungen werden im Allgemeinen als unsichere Option für das Rückgängigmachen von Änderungen betrachtet. Sie sind akzeptabel, wenn man lokal an isoliertem Code arbeitet, werden aber riskant, wenn dieser mit Teammitgliedern geteilt wird.
Um einen Branch, der zurückgesetzt wurde, für ein Remote-Team freizugeben, ist ein "erzwungener Push" erforderlich. Dieser wird durch den Befehl git push -f
initiiert. Ein erzwungener Push macht jeglichen Verlauf auf dem Branch zunichte, der nach dem Push-Zeitpunkt erstellt wurde.
Ein Beispiel für dieses "unsichere" Szenario folgt hier:
- Entwickler A hat an einem Branch für die Entwicklung eines neuen Features gearbeitet.
- Entwickler B hat am selben Branch gearbeitet, um ein separates Feature zu entwickeln.
- Entwickler B entscheidet sich, den Branch auf einen früheren Status zurückzusetzen, bevor Entwickler A und B mit der Arbeit daran begonnen haben.
- Entwickler B führt einen erzwungenen Push des zurückgesetzten Branches auf das Remote-Repository durch.
- Entwickler A pullt den Branch, um Aktualisierungen zu erhalten. Während dieses Vorgangs empfängt Entwickler A die erzwungene Aktualisierung. Dadurch wird der lokale Branch von Entwickler A auf einen Status zurückversetzt, bevor Arbeiten am Feature abgeschlossen waren, und alle Commits gehen verloren.
Rückgängigmachen von git reset
Bisher haben wir git commit
-Sha-Hashes an git reset
übergeben. In der git log
-Ausgabe fehlen jetzt Commits, die wir zurückgesetzt haben. Wie bekommen wir diese zurück? Git löscht Commits niemals vollständig, es sei denn, sie wurden von Pointern getrennt, die auf sie verweisen. Darüber hinaus speichert Git ein separates Protokoll namens "the reflog" zu allen Referenzbewegungen ab. Dieses können wir untersuchen, indem wir git reflog
ausführen.
1a6a403 HEAD@{0}: reset: moving to 1a6a403
1f08a70 HEAD@{1}: reset: moving to origin/main
1f08a70 HEAD@{2}: clone: from git@bitbucket.org:dans9190/tutorial-documentation-tests.git
Die Ausgabe von git reflog
sollte bei dir ähnlich wie oben aussehen. Du kannst den Verlauf von Aktionen im Repository anzeigen. Die oberste Zeile ist eine Referenz auf die Zurücksetzung, die wir an der Pull-Anfrage Nr. 6 durchgeführt haben. Und nun setzen wir die Zurücksetzung zurück, um Pull-Anfrage Nr. 6 wiederherzustellen. Die zweite Spalte dieser reflog-Ausgabe zeigt einen Ref-Pointer zu einer Änderung an, die wir im Repository vorgenommen haben. Hier ist HEAD@{0}
eine Referenz auf den reset-Befehl, den wir vorhin ausgeführt haben. Da wir den reset-Befehl nicht wiederholen wollen, setzen wir das Repository auf HEAD@{1}
zurück.
$ git reset --hard HEAD@{1}
HEAD is now at 1f08a70 Initial Bitbucket Pipelines configuration
Sehen wir uns nun den Commit-Verlauf im Repository mit git log --oneline
an:
$git log --online
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'main' into new-feature2 Merge branch especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
:
Die Protokollausgabe zeigt jetzt, dass der Commit-Verlauf ebenfalls geändert wurde und mit dem Commit "1a6a403" beginnt. Zu Demonstrationszwecken nehmen wir an, dass wir jetzt die eben durchgeführte Zurücksetzung wieder rückgängig machen wollen. Nach einiger Überlegung sind wir zu dem Schluss gekommen, dass wir die Inhalte der Pull-Anfrage Nr. 6 doch behalten wollen.
git revert
Bei den vorherigen Beispielen sind wir im Verlauf weit zurückgegangen, um Aktionen zum Rückgängigmachen mithilfe von git reset
und git reflog
durchzuführen. Es gibt in Git jedoch noch eine andere Methode für das Rückgängigmachen, die oft als sicherer betrachtet wird als das Zurücksetzen. Beim Rückgängigmachen mit "git revert" werden neue Commits erstellt, die eine Umkehrung der spezifizierten Commit-Änderungen enthalten. Diese revert-Commits können dann sicher auf Remote-Repositorys gepusht werden, um sie für andere Entwickler freizugeben.
Im folgenden Abschnitt geht es um die Nutzung von git revert
. Hierzu machen wir mit dem Beispiel aus dem vorherigen Abschnitt weiter. Zu Beginn untersuchen wir das Protokoll und suchen einen Commit, den wir rückgängig machen können.
$ git log --online
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'main' into new-feature2 Merge branch especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
:
Für dieses Beispiel wählen wir den neuesten Commit 1f08a70
zur Bearbeitung aus. In diesem Szenario wollen wir Bearbeitungen rückgängig machen, die an diesem Commit vorgenommen wurden. Führe Folgendes aus:
$ git revert 1f08a70
Damit wird ein git merge
-Workflow gestartet. Git erstellt einen neuen Commit, dessen Inhalt die Umkehrung des Commits ist, der für das Rückgängigmachen ausgewählt wurde. Git öffnet daraufhin einen konfigurierten Texteditor, um zur Eingabe einer neuen Commit-Nachricht aufzufordern. Das Rückgängigmachen mit git revert wird wegen dieses Commit-Workflows als sicherere Methode betrachtet. Die Erstellung von revert-Commits führt zu einem Commit-Verlauf, in dem klar angegeben ist, wann etwas rückgängig gemacht wurde.
Du hast gerade gelernt, wie man Änderungen rückgängig macht!
Glückwunsch! Du hast es geschafft. Du kannst jederzeit zu diesem Tutorial zurückkehren oder dir den Abschnitt "Rückgängigmachen von Änderungen" ansehen, um dich ausführlicher mit dem Thema auseinanderzusetzen. Mach weiter so in Bitbucket!
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.