Git Versionierung ist das Maß aller Dinge beim Webdevelopment mit PHP. Dabei ist natürlich ein Git Checkout ein elementares und wichtiges Kommando. In der Regel wird es allerdings nur dazu benutzt, um neue Branches zu erstellen, zwischen Branches zu wechseln und natürlich Files in der aktuellen Entwicklung zu resetten, also zurückzusetzen. Dabei hat das Git Command noch eine andere wichtige Funktion, die ich heute näher erläutern möchte.
Git Checkout File von Master
Schaut man sich einmal die offizielle Dokumentation zum Git Checkout Command an findet man weit mehr Funktionen, als den einfachen Wechsel zwischen Branches.
When or –patch are given, git checkout does not switch branches. It updates the named paths in the working tree from the index file or from a named (most often a commit)…The argument can be used to specify a specific tree-ish (i.e. commit, tag or tree) to update the index for the given paths before updating the working tree. https://git-scm.com/docs/git-checkout
Git SCM
Leider sind Dokumentationen nicht immer benutzerfreundlich geschrieben. Daher versuche ich mit diesem Blog-Post hier einmal ein wenig Licht in die technische Dunkelheit zu bringen. Grundsätzlich ist es in Git immer möglich mit Hilfe des ‚tree-ish‘ einen bestimmten Commit oder auch ein File von einem anderen Branch aus auszuchecken. Damit man seinen aktuellen Branch mit den Files eines bestimmten Commits aktualisieren kann ist folgendes nötig.
git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>
Git Einzelnes File von anderem Branch auschecken
Es kommt natürlich auch bei den besten Webdevelopern vor, daß man sich einmal verstrickt hat. Wenn man mit PhpStormBest Practice arbeitet kennt man natürlich die nützliche Funktion mit einem Remote Branch zu vergleichen. Was aber, wenn man dahin zurück möchte. Es gibt natürlich auch den Fall, daß man sich vielleicht zu erst auf einen aktuellen Stand aus einem anderen Branch bringen möchte. Das kann man hier auch immer auf File-Ebene tun. Hier bietet sich der Web über ein Terminal an, da in in meinen Augen schneller und einfacher ist.
git checkout <branch_name> -- <paths>
Beispiel Git Einzelnes File von anderem Branch auschecken
git checkout cc-testing -- composer.json
git commit -m "Update composer.js from cc-testing"
Fazit Git Checkout Files von anderem Branch
Leider ist die Nutzung der Command Line für viele Webdeveloper noch ein immer eine große Hürde sich fundiertes und professionelles Wissen über Git leicht zugänglich zu machen und anzueignen.
Ich benutze PhpStorm und brauche keine Git-Commands
Senior Webdeveloper mit 4 Jahren Berufserfahrung
Leider fällt mir da auch nicht immer die passende Antwort bei Schulungen ein und ich begebe mich verlegen in ein Schweigen. Natürlich ist das ein Einstellungsproblem und es ist leider exemplarisch für die Realität. Etwas beurteilen zu können setzt in diesem Falle natürlich Fachwissen voraus. Das hier jetzt detailliert auszuführen ist sicher nicht in dem Sinn meiner Leser.
Git bietet tolle Möglichkeiten und entwickelt sich natürlich auch weiter. Gerade in dem letzten Release ist auch wieder ein Fokus bei den neuen Features auf die Command Line gelegt worden. Hier lohnt es sich definitv auf dem laufenden zu bleiben und sich auch seine eigenen Sourcen aktuell zu halten. Eine Git-Schulung und auch eine Schulung oh-my-zsh biete ich im Rahmen von Entwicklungshilfe NRW an.