Git und die wichtigsten fortgeschrittenen Techniken

    Inhalt

    1. Schnelleinstieg – Befehle fortgeschrittener Techniken
    2. Kann man aus Git noch mehr herausholen?
    3. Fortgeschrittene Techniken ausführlich erklärt

    1. Schnelleinstieg – Befehle fortgeschrittener Techniken

    $ git config --global alias.diffs 'diff --staged' 

    Alias zu einem bestimmten Befehl (hier diff –staged) anlegen

    $ git restore js/

    Änderungen z.B. aus einem bestimmten Verzeichnis (hier js/) rückgängig machen

    $ git blame -M -C header.js

    Die Herkunft von Codeabschnitten genau bestimmen

    $ git branch feature-25 37h6fa72e

    Neuen Branch von einem bestimmten Commit abzweigen

    $ git cherry-pick 91f7he82d

    Änderungen aus einzelnem Commit gezielt übernehmen

    $ git fetch origin feature-05 master

    Branches feature-05 und master vom Repository origin holen

    $ git reflog

    Auflistung des Verlaufs aller Head-Stände

    $ git log --oneline --first-parent | tail -1

    Zeigt einzeilig den ersten Commit eines Branches

    $ git tag -a release-1.4 -m "Release-1.4"

    Einen Tag eines Release-Commits anlegen

    $ git archive HEAD --format=zip > archive.zip

    Ein Zip-Archiv eines bestimmten Commits erstellen

    2. Kann man aus Git noch mehr herausholen?

    Die Möglichkeiten von Git sind sehr vielfältig. Man kann Git im professionellen Einsatz mit den empfohlenen Workflows einsetzen, ohne fortgeschrittene Techniken anwenden zu müssen.

    Allerdings sind hierbei immer die Fragen, was möchte man erreichen und welchen Vorteil kann man für sein Arbeitsumfeld aus den zusätzlichen Möglichkeiten fortgeschrittener Techniken ziehen.

    Diese Fragen kann nur jeder selbst für sich beantworten, ich kann mit einer Übersicht der meiner Erfahrung nach wichtigsten fortgeschrittenen Techniken dabei helfen, Git vielleicht noch effizienter zu nutzen.

    3. Fortgeschrittene Techniken ausführlich erklärt

    3.1 Alias anlegen

    Sehr hilfreich ist das Anlegen von einem Alias zu einem bestimmten Befehl. So kannst du z.B. folgende Konfiguration verwenden, um git diff mit der Option –staged auszuführen

    $ git config --global alias.diffs 'diff --staged' 

    Zukünftig gibst du also nur noch

    $ git diffs 

    ein, um dir die zum Commit vorgemerkten Änderungen des Staging-Bereichs anzeigen zu lassen.

    Möchtest du deine aktuelle Konfiguration einsehen, verwendest du

    $ git config --list

    und es werden nicht nur aktuelle Aliasse, sondern konfigurierter Username, Email, Branches und einiges mehr, angezeigt.

    3.2 Restore

    Mit dem Restore-Befehl lassen sich Änderungen wieder rückgängig machen. Mit folgendem Befehl die aktuellen Änderungen des Arbeitsbereiches, z.B. aus dem Ordner js/

    $ git restore js/

    und mit folgendem Restore-Befehl die bereits dem Stage-Bereich hinzugefügten Änderungen, die damit wieder in den Arbeitsbereich zurückgesetzt werden

    $ git restore --staged js/ 

    3.3 Blame

    Den Blame-Befehl kannst du für die Herkunft von Codeabschnitten verwenden, wenn es sich um verschieben und kopieren von Abschnitten aus anderen Dateien handelt.

    So wird mit

    $ git blame -M -C header.js

    zeilenweise angezeigt, wann und durch wen die Änderung erfolgte.

    3.4 Commit/Branch abzweigen

    Das Abzweigen von neuen Branches kannst du, wie es auch von mir im Beitrag Git und die wichtigsten Befehle für den professionellen Einsatz empfohlen wurde, vom Master Branch aus machen.

    Willst du ab einem bestimmten Commit oder Branch abzweigen, gibst du den neuen Branch-Namen und die Commit-ID an

    $ git branch feature-25 37h6fa72e

    und hast damit den Branch „feature-25“ auf Grundlage des Commits „37h6fa72e“ erstellt.

    Für das Abzweigen eines bestehenden Branches gibst du lediglich den neuen vom abzuzweigenden Branch an

    $ git branch feature-25 feature-05

    3.5 Cherry-pick

    Mit dem cherry-pick Befehl lassen sich Änderungen aus einem bestimmten Commit in eine andere Version oder Branch übernehmen.

    Zum Beispiel nutzt man den Befehl, um kleinere Änderungen aus einem Feature-Branch zu übertragen, um diesen danach löschen zu können.

    Mit

    $ git cherry-pick 91f7he82d

    kannst du also den Stand des Commits „91f7he82d“ in deinen aktuellen Branch übernehmen.

    3.6 Fetch

    Der Fetch-Befehl gehört eigentlich nicht unbedingt zu den fortgeschrittenen Techniken, sondern wird auch gerne im normalen Arbeitsablauf verwendet. Das hängt immer von den Situationen bzw. den Workflows der Entwickler ab.

    Willst du ausgewählte Branches aus einem ausgewählten Repository ziehen, kannst du mit

    $ git fetch origin feature-05 master

    z.B. die Branches feature-05 und master aus dem Repository origin holen. Und ohne Parameter, also mit

    $ git fetch 

    würdest du per Default-Auswahl alle Branches aus dem Repository origin holen.

    Der Unterschied zum Pull-Befehl ist übrigens, dass beim fetch der Merge-Befehl nicht automatisch mit ausgeführt wurde.

    3.7 Reflog

    Möchte man alle Änderungen an Branches und deren Head sehen, listet

    $ git reflog

    den Verlauf für jeden Head-Stand auf. Dies ist besonders wichtig, wenn du gezielt Änderungen aus einem vorherigen Head-Stand einsehen und eventuell herstellen willst.

    3.8 Log

    Der Log-Befehl bietet diverse Optionen, hiermit kannst du den ersten Commit eines Branches anzeigen lassen, in der Regel also den initial commit.

    $ git log --oneline --first-parent | tail -1

    Der Parameter –oneline zeigt die Log-Ausgabe in einer Zeile und –first-parent steht, wie der Name sagt, für das erste Parent-Commit.

    Mit tail -1 wird lediglich die letzte Zeile der Log-Ausgabe angezeigt.

    Eine Möglichkeit zur Suche innerhalb der Log-Ausgabe ist der schon von Linux bekannte grep-Befehl. So kannst du mit

    $ git log --grep="release"

    die Log-Ausgabe nach der Zeichenkette „release“ durchsuchen.

    3.9 Tagging

    $ git tag -a release-1.4 -m "Release-1.4"

    Für einen Commit ein Release-Tag zu vergeben, kann in einigen Projekt-Workflows durchaus zur zusätzlichen standardisierten Markierung gehören.

    Mit der Parameter -a erstellt man ein mit Anmerkungen versehenes Tag und -m sorgt wie bei einem Commit für die Option der Eingabe einer Nachricht.

    Willst du nachträglich ein Release taggen, kannst du das mit

    $ git tag 3.5.1 91f7he82d

    unter Angabe des Tag 3.5.1 und der Commit-ID, die du mit git log herausfinden kannst.

    3.10

    $ git archive HEAD --format=zip > archive.zip

    Mit dem Archive-Befehl kannst du ein Archiv erstellen. In dem vorgestellten Befehl wird das Archiv mit den Daten des ausgewählten Commits exportiert.

    Man kann auch die Daten aus einem Branch exportieren. Mit dem Befehl

    $ git archive --output=05-feature.zip --prefix=2.5.6 05-feature

    wird ein Archiv erstellt, das durch den –output-Prameter unter dem Namen 05-feature.zip exportiert wird. Mit –prefix wird der Präfix 2.5.6 jedem Dateinamen vorangestellt und die Angabe des letzten Parameters wählt den Branch, in diesem Fall 05-feature.

    Möchtest du im tar-Format exportieren, ersetzt du in den beiden oben gezeigten Beispielen jeweils zip durch tar.

    Neueste Beiträge

    Git: Glossar

    Einige Git-Begriffe kamen in meinen Artikeln Git und die wichtigsten Befehle für den professionellen Einsatz und Git und die wichtigsten fortgeschrittenen Techniken...

    Git und die wichtigsten fortgeschrittenen Techniken

    Inhalt Schnelleinstieg - Befehle fortgeschrittener TechnikenKann man aus Git noch mehr herausholen?Fortgeschrittene Techniken ausführlich erklärt

    Linux Shell: Mit der Bash arbeiten

    Inhalt Schnelleinstieg - Die wichtigsten Shell-BefehleWas ist die Linux Shell?Shell-Befehle ausführlich erklärt 1. Schnelleinstieg -...

    Windows PowerShell: Skript ausführen

    Inhalt Schnelleinstieg - Skript erstellen und ausführen Was ist ein PowerShell-Skript?PowerShell-Skript ausführlich erklärtFortgeschrittene Techniken 1....

    Windows PowerShell und die wichtigsten Befehle (Cmdlets)

    Inhalt Schnelleinstieg - Die wichtigsten PowerShell Befehle (Cmdlets)Was ist die Windows PowerShell?InstallationPowerShell-Befehle ausführlich erklärtFortgeschrittene Techniken

    Ähnliche Beiträge

    Kommentar schreiben

    Deinen Kommentar abschicken
    Gebe bitte deinen Namen ein