Git und die wichtigsten Befehle für den professionellen Einsatz

    Inhalt

    1. Schnelleinstieg – Die wichtigsten Git Befehle
    2. Was ist Git?
    3. Voraussetzungen
    4. Git-Befehle ausführlich erklärt
    5. Fortgeschrittene Techniken

    1. Schnelleinstieg – Die wichtigsten Git Befehle

    $ git init 

    Ein lokales Verzeichnis als Git Repository initialisieren.

    $ git remote add origin https://gitlab.com/dr/projekt.git

    Das lokale Projekt mit dem entfernten Git Repository verknüpfen.

    $ git status

    Den aktuellen Stand zu Änderungen, Branches, Commits anzeigen.

    $ git add .

    Das aktuelle Projekt dem Staging-Bereich hinzufügen.

    $ git reset HEAD datei.js

    Datei aus dem Staging-Bereich zurücknehmen.

    $ git commit -m "initial commit"

    Den aktuellen Stand aus dem Staging- in den Index-Bereich aufnehmen.

    $ git push

    Die Änderungen aus dem Index-Bereich auf das entfernte Git-Repository hochladen.

    $ git pull

    Den aktuellen Stand des Git-Repositories auf das lokale Repository ziehen/aktualisieren.

    $ git branch

    Damit erstellst du einen neuen Zweig, in dem z.B. ein Feature entwickelt werden kann.

    $ git checkout -b feature-01 master

    Erzeugt einen Feature-Branch aus dem des Master-Branch.

    $ git diff feature-01 master

    Zeigt Unterschiede vom Quell- zum Zielbranch an.

    $ git merge feature-01

    Fügt Änderungen aus dem Feature-Branch mit einem anderen, z.B. dem Master zusammen.

    Und nun der Reihe nach:

    2. Was ist Git?

    Git ist ein weltweit verbreitetes Tool zur Versionsverwaltung von Software-Versionen und zur Kollaboration. Es wurde von Linus Torvalds bereits 2005 entwickelt und gilt mittlerweile als Industriestandard.

    Das zentrale Repository kann lokal oder bei einem Git-Hosting-Provider gespeichert werden. Bekannte Provider für das Code-Hosting von Projekten sind GitHub, GitLab und Bitbucket.

    3. Voraussetzungen

    Git lokal installieren
    Git muss lokal installiert werden, damit du es nutzen kannst. Die Download-Links für Windows und Mac, bzw. die Installation per Package Manager unter Linux findest du hier:

    Windows: https://git-scm.com/download/win
    Mac: https://git-scm.com/download/mac
    Linux: https://git-scm.com/download/linux

    Account bei einem Git-Hosting-Provider anlegen
    Bei den bereits genannten führenden Git-Hostern musst du einen Account angelegen, über den das entfernte Repository erstellt werden kann. Hier die Links der von mir empfohlenen Anbieter, wobei es auch diverse weitere Anbieter gibt:

    GitHub: https://github.com/
    GitLab: https://gitlab.com/users/sign_in
    Bitbucket: https://bitbucket.org/account/signup/

    Graphical User Interface (GUI) verwenden
    Willst du Git nicht über das Command Line Interface (CLI) verwenden, kannst du auch eine GUI installieren, das je nach Tool die einzelnen User, Commits, Branches und/oder Logs grafisch darstellt. Eine Auswahl einiger Tools findest du hier:

    Sourcetree (Windows, Mac)
    GitHub Desktop (Windows, Mac)
    MercurialGit (Windows)

    Und viele weitere, die du hier findest https://git-scm.com/downloads/guis/

    4. Git-Befehle ausführlich erklärt

    4.1 git init

    Damit ein lokales Verzeichnis erstmals als Git Repository initialisiert wird, verwendest du

    $ git init 

    Ab diesem Zeitpunkt werden alle Dateien in diesem Verzeichnis versioniert. Mit

    $ git status 

    kannst du testen, ob die Initialisierung erfolgreich war, die Konsolenausgabe zeigt dir auf welchem Branch du dich befindet („On branch master“). Außerdem wurde damit ein Verzeichnis Namens .git angelegt, in dem deine Versionen gespeichert werden.

    4.2 git remote

    Der remote-Befehl wird zur Verwendung externer Repositories genutzt. Ohne weitere Optionen kannst du mit

    $ git remote

    die aktuell verwendeten Remote-Repositories anzeigen. Mit der Option -v werden dir die jeweiligen URL´s angezeigt.

    Mit dem bereits genannten Befehl

    $ git remote add origin https://gitlab.com/dr/projekt.git

    fügst du ein neues entferntes Repository hinzu.

    Mit dem Befehl

    $ git remote show origin 

    werden erweiterte Informationen zum Repository origin angezeigt, z.B. die verschiedenen Branches, die für git push bzw. git pull konfiguriert sind.

    4.3 git status

    Den aktuellen Status rufst du mit

    $ git status 

    auf. Weitere Optionen sind z.B. -s (short) für die Kurzausgabe der Anzeige oder -u für die untracked Files.

    4.4 git add

    Der bereits gezeigte Befehl git add . fügt Änderungen der versionierten Dateien dem Staging-Bereich zu. Möchtest du nur bestimmte Unterverzeichnissse oder Dateien hinzufügen, hängst du statt dem Punkt die Dateien/Verzeichnisse an:

    $ git add index.html js/script.js js/header  

    Zwischen den einzelnen Dateien/Verzeichnissen muss ein Leerzeichen gesetzt werden.

    Willst du zukünftig Änderungen immer automatisch dem Staging-Bereich hinzufügen, kannst du das mit

    $ git add -a 

    erreichen und sparst dir damit einen Schritt.

    $ git add --all

    Mit dem Parameter –all werden alle Dateien (geändert, hinzugefügt, gelöscht) hinzugefügt.

    4.5 git reset

    Hast du eine oder mehrere Dateien/Verzeichnisse durch git add dem Staging-Bereich hinzugefügt, möchtest aber mindestens ein/e Datei/Verzeichnis wieder zurücknehmen, um z.B. diese erst in einem zweiten Commit hinzuzufügen, kannst du mit

    $ git reset HEAD index.html

    in diesem Fall die index.html wieder als unstaged File aus dem Staging-Bereich entfernen.

    Mit dem Befehl

    $ git reset --soft

    nimmst du Änderungen aus dem Index wieder zurück in den Staging und mit

    $ git reset --hard

    nimmst du Änderungen aus dem Index wieder in deinen Arbeitsbereich auf.

    4.6 git commit

    Hast du alle Dateien/Verzeichnisse für den ersten Commit vorbereitet, werden alle Änderungen mit

    $ git commit -m "first commit"

    aus dem Staging-Bereich in den Index hinzugefügt. Die Option -m wird benötigt, wenn du eine Commit-Message zum Commit erzeugen willst. Ich empfehle jeden Commit mit einer Message zu erstellen, da diese in allen Histories der IDE (Integrated Development Environment), der Git-GUI, sowie der Git-Hoster angezeigt wird.

    Eine Commit-Message muss in Anführungsstrichen angegeben werden. In der Zusammenarbeit mit anderen Team-Mitgliedern, bzw. im beruflichen Kontext mit Arbeitskollegen, sind klare Konventionen zu empfehlen, wie eine Message in bestimmten Projekten und/oder Aufgabenbereichen formuliert wird.

    $ git revert 86f654h

    Mit dem Revert-Befehl wird der Stand des Commits mit der angegebenen Commit-ID wiederhergestellt.

    4.7 git push

    Für die lokale Versionsverwaltung würde das Committen ausreichen. Möchtest du aber die einzelnen Versionen auf dem entfernten Repository deinen Kollegen bei einem Git-Hoster hochladen, nutzt du

    $ git push

    Würdest du einen kürzlich erzeugten Branch mit git push Pushen wollen, erscheint die Fehlermeldung (feature-01 steht für einen beliebigen Branch-Namen):

    fatal: The current branch master has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
        git push --set-upstream feature-01

    Wie auch schon in der Fehlermeldung vorgeschlagen, muss folgender Befehl bei erstmaligem Pushen dieses Branches verwendet werden,

    $ git push --set-upstream feature-01

    um einen Upstream zu erzeugen.

    4.8 git pull

    Wenn mehrere Kollegen/Team-Mitglieder in dem Repository arbeiten, entstehen unterschiedliche Versionsstände, die du dir in regelmäßigen Abständen in dein Arbeitsbereich ziehen solltest. Mit

    $ git pull

    werden aktuelle Änderungen aus dem Remote-Repository in deinen Arbeitsbereich hinzugefügt.

    Dabei verwendest du mit git pull eigentlich zwei Befehle. Als erstes wird git fetch zum Herunterladen der Änderungen vom Remote-Repository, dann git merge zum Zusammenfügen mit dem lokalen Stand verwendet.

    4.9 git branch

    Wenn du ein Feature, ein Modul, eine Komponente weiterentwickeln willst, ist der empfohlene Weg dies über ein Feature-Branch zu lösen. Der Branch wird aus dem Master heraus erstellt, man befindet sich also auf Grundlage des Codes vom Master-Branch, wenn der Feature-Branch generiert wird.

    $ git branch feature-01

    Ist er Branch fertiggestellt, wird er mit anderen Branches, meistens dem direkt darüberliegenden, z.B. in einfachen Git-Workflows, dem Master-Branch, zusammengefügt. Das erledigst du mit git merge, darauf gehe ich noch genauer ein.

    Hat man während der Entwicklungsarbeit auf Grundlage eines sauberen Branches gearbeitet, den man nicht verändern möchte, will also im Nachhinein seine Änderungen in einen neuen noch nicht angelegten Branch übernhemen, kombiniert man git checkout mit git branch.

    $ git checkout -b feature-02

    Mit checkout wird nach dem Anlegen direkt in diesen Branch gewechselt.

    Mit dem Befehl

    $ git branch -d feature-1

    wird der Branch feature-01 gelöscht.

    4.10 git checkout

    Git checkout aktualisiert einen anderen Stand, z.B einen anderen Branch. So gelangst du mit

    $ git checkout master 

    wieder in deinen Master-Branch.

    Möchtest du einen neuen Branch erzeugen und gleichzeitig in diesen wechseln, ist

    $ git checkout -b feature-02

    der entsprechende Befehl, z.B. für einen Branch Namens feature-02.

    4.11 git diff

    Zeigt git status die Dateien an, an denen du Änderungen vorgenommen hast, zeigt

    $ git diff

    die genauen Änderungen in den Dateien mit vorheriger Version (rot) im Vergleich zur aktuellen Version (grün).

    Die Option –cached zeigt Änderungen die im Staging-Bereich vorgemerkt sind, der gesamte Befehl ist

    $ git diff --cached

    Die Option –staged ist gleichbedeutend.

    $ git diff 86f654h^! 

    Zeigt die Unterschiede zu seinem direkten Vorgänger-Commit.

    4.12 git merge

    Diesen schon kurz erwähnten Befehl kannst du zum Zusammenfügen von Branches verwenden. Hast du z.B. einen Branch feature-01 erstellt, in diesem gearbeitet und die Änderungen gepusht, kannst du mit folgendem Befehl Master und feature-01 zusammenfügen

    $ git checkout master
    $ git merge feature-01

    Mit checkout wird nach erfolgtem Push in den Master-Branch gewechselt. Vom Master kann dann der mit der Angabe des zu mergenden Branches der Merge erfolgen.

    5. Fortgeschrittene Techniken

    5.1 Alias anlegen

    Sehr hilfreich ist das Anlegen von einem Alias zu einem bestimmten Befehl. So kannst du z.B. folgende Konfiguration verwendet werden, 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.

    5.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/ 

    Neueste Beiträge

    Linux Shell: Mit der Bash arbeiten

    Inhalt Schnelleinstieg - Die wichtigsten Shell-BefehleWas ist die Linux Shell?Shell-Befehle ausführlich erklärtFortgeschrittene Techniken 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

    Git und die wichtigsten Befehle für den professionellen Einsatz

    Inhalt Schnelleinstieg - Die wichtigsten Git BefehleWas ist Git?VoraussetzungenGit-Befehle ausführlich erklärtFortgeschrittene Techniken 1. Schnelleinstieg -...

    Ähnliche Beiträge

    Kommentar schreiben

    Deinen Kommentar abschicken
    Gebe bitte deinen Namen ein