Es gibt natürlich auch die Situation beim Webdevelopment einen Git Merge rückgänig machen zu wollen. Es kann natürlich passieren, daß man ein bestimmtes Feature zu früh zur Verfügung gestellt hat oder auch einfach zu viele Files geadded wurden. Der Klassiker ist hier der Jetbraints .idea Folder von PhpStorm aus dem Root-Verzeichnis vom Working Diretory. Peinliche Git-Pails lassen sich übrigens im Vorfeld auch recht einfach vermeiden. Dazu gibt es hier den passenden Artikel „Git Schulung – 3 Dinge, die peinlich sind„.
Know How ist wichtig – Tools machen uns abhängig
Git ist ein fester Bestandteil der Web Entwicklung. Leider wird im Tagesgeschäft nicht immer viel Wert auf Weiterbildung und Softwarequalität gelegt. Dazu gibt es hier auch einen Top Artikel „Softwarequalität wird nicht bezahlt„. In der Praxis hat das den Einsatz von Tools, wie Sourcetree und PhPStorm zur Folge. Tools nehmen uns eine Menge Arbeit ab, wirken sich allerdings negativ auf unsere Skills aus. Über wichtige Dinge wie „Git rebase“oder auch die Konfiguration einer „Globalen .gitignore“ gibt es oft kein Wissen. Das ist recht bedauerlich. Denn in Summer hat Git gar nicht so viele Commands, die zum Einsatz kommen. Deshalb sollte man einfach mal Git auf der Command Line einsetzen und hier den Befehl „git add -p“ und das Tool „tig“ einsetzen.
Git Merge rückgängig machen – git reset –hard origin/master – Git Merge rückgänig machen
Der Klassiker bei der Arbeit mit dem TYPO3 Core, beispielsweise bei einem TYPO3 Code Review für kommende Releses ist ein:
git reset –hard origin/master
Damit setzt man den aktuellen Git-Zustand zurück auf den Git-Commit, der aktuell auf dem Origin-Repository ist. Das bedeutet allerdings auch, daß Dateien die bis dahin nicht erfasst sind als neue Dateien im Working Directory zurückbleiben.
Git Clean – Unversionierte Files löschen – Git Merge rückgängig machen
Es reicht nicht nur den Zustand auf den aktuellen Git-Pointer vom Remote Repository zu setzen. Denn Files die zu diesem Zeitpunkt nicht versioniert sind werden damit nicht entfernt, sondern nehmen nur den Status an, daß sie praktisch neu sind. Das macht Git natürlich um einen möglichen Datenverlust vorzubeugen. Diesen Zustand braucht man nicht manuell zu beheben. Dafür gibt es das Git Clean Command:
git clean -id
Persönlich setze ich ja Git auf dem oh-my-zsh Terminal mit dem Agnoster Theme ein. Hier werden mit dem Git-Plugin einige Aliase zur Verfügung gestellt. Hier wird der Befehl einfach mit:
gclean
ausgeführt. Das kann natürlich auch immer während der Arbeit oder bei den folgenden Tipps ausgeführt werden.
git reset –hard commit_sha
Git reset zu spezifischen Commit. Betrachtet man die History über die Commandline CLI oder mit Tig, so kann man den entsprechenden Hashwert von vor der Änderung raussuchen und gezielt dahin zurück springen.
git reset –hard HEAD~15
Natürlich kann man die Commits auch Zählen und ihre Anzahl zurück springen.
git reset –merge ORIG_HEAD
Aus der Git Merge Dokumentation kann man noch folgenden hilfreichen Befehl nehmen. Hier ist es allerdings auch wichtig, das ORIG_HEAD auf einen sauberen Stand zeigt.
git revert -m 1 commit_hash
Hier noch eine Möglichkeit einen Merge zu reverten und gleichzeitig zu einem bestimmten Hashwert zurück zu gehen. Kapitel 2.4 im Git-Book Git-Basics – Undoing things. Dazu gibt es auch noch den Orginal Post von Liuns TorvaldsRevert a faulty merge in den gewohnt knalligen Farben ;).
Fazit Git Merge rückgängig machen – Git Schulung – PHP Training
Git ist wichtig und macht Spaß. Es ist ein elementares Tool und eine innovative Technologie, die wir täglich nutzen. Deshalb müssen wir uns natürlich auch professionell damit auseinander setzen. Der Einsatz auf der Command Line ist gut und hält uns fit. Nichts ist schlimmer als von Tools abhängig zu sein. Wir müssen immer auch auf virtuellen, lokalen oder natürlich auch Live Umgebungen Dinge mit Git tun können. Und eines ist auch klar, wer keinen Cherry Pic kann wird ihn auch nie brauchen. Eine gezielte und praktische Git Schulung und auch sehr gute PHP-Trainings gibt es bei der Entwicklungshilfe NRW.
2 Kommentare
[…] wurde. Wird die Zeile dann entfernt kommt es oft vor, daß man das gewünschte File nicht zu seinem Git-Repository hinzufügen […]
[…] hochladen oder sich einen aktuellen Stand einer Software mit einer Verwaltungssoftware, wie Git, auschecken. Beide Methoden brauchen manuell ausgeführt viele personelle Ressourcen und […]