Git #2 - Änderungen speichern und Status einer Repository

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Registriere dich um viele Vorteile zu genießen! Weniger Werbung, bessere Kommunikation und vieles mehr!

  • In diesem Lexikoneintrag lernst du, wie du Änderungen in der Repository abspeichern kannst und wie du Informationen über den Status deiner Repository erhältst.
    Änderungen speichern

    git add

    Das Kommando git add fügt eine Änderung im Arbeitsordner direkt in die Staging Area ein. Der Befehl sagt Git, dass du die Updates im nächsten Commit einfügen willst. Jedoch verändert git add die Repository nicht signifikant. Die Änderungen werden erst übernommen nachdem du git commit ausgeführt hast.
    Im Zusammenhang mit diesen Kommandos benötigst du auch git status um den Status deines Arbeitsordners und der Staging Area einzusehen.

    Benutzung

    git add <file>

    Alle Änderungen in <file> werden für den nächsten Commit gestaget.

    git add <directory>

    Alle Änderungen in <directory> werden für den nächsten Commit gestaget.

    git add -p

    Startet eine interaktive Staging Session die dir die Möglichkeit gibt, ausgewählte Teile einer Datei für den nächsten Commit zu stagen. Dies zeigt dir alle Änderungen, die du getätigt hast. Folgende Funktionen können genutzt werden:
    • y um eine Änderung zu stagen
    • n um die Änderungen zu ignorieren
    • s um eine Änderung in kleinere Teile aufzuteilen
    • e um die Auswahl manuell zu bearbeiten
    • q um diese Staging Session zu beenden
    Staging Area

    Die Staging Area ist eines der einzigartigen Git Features. Man kann es als eine Art Pufferzone zwischen dem Arbeitsordner und der Projekthistory sehen.
    Anstatt direkt alle Änderungen, die seit dem letzten Commit gemacht wurden, zu übertragen, kann man mit der Staging Area zusammengehörende Änderungen in Snapshots gruppieren.

    Beispiel

    Um einen initialen Commit des aktuellen Ordners zu erstellen musst du die folgenden Kommandos benutzen:

    Quellcode

    1. git add
    2. git commit

    Wenn du das Projekt einmal am laufen hast, können neue Dateien mit dem git add Kommando hinzugefügt werden:

    Quellcode

    1. git add hello.java
    2. git commit

    Die oberen Kommandos können genutzt werden um Änderungen von existierenden Dateien einzusehen. Außerdem unterscheidet Git nicht zwischen Änderungen in neuen Dateien und Änderungen in Dateien, die bereits in der Git Repository vorhanden sind.

    git commit

    Das Kommando git commit übergibt die gestageten Snapshots an die Projekthistory. Übergebene Snapshots können als "sichere" Versionen des Projektes angesehen werden - Git wird diese niemals verändern, wenn du nicht explizit danach verlangst. git add ist es einer der wichtigsten Git Kommandos.

    Benutzung

    git commit

    Übergibt die gestageten Snapshots. Dies startet einen Text Editor, der dich nach einer Commitnachricht fragt. Nachdem du diese eingetragen hast musst du die Datei speichern und den Editor schließen um den Commit freizugeben.

    git commit -m "<message>"

    Übergibt den gestageten Snapshot aber anstelle vom Text Editor, wird <message> als Commitnachricht genutzt.

    git commit -a

    Übergibt einen Snapshot, aller Änderungen im Arbeitsordner. Dies umfasst nur Änderungen an bereits getrackten Dateien (also die, die via git add schon einmal hinzugefügt wurden).

    Beispiel

    Das folgende Beispiel setzt voraus, dass du etwas in einer Datei geändert hast mit dem Namen hello.java und es bereits in die Projekthistory übergeben hast. Zuerst musst du die Datei via git add stagen und dann den gestageten Snapshot commiten.

    Quellcode

    1. git add hello.java
    2. git commit

    Dies öffnet einen Text-Editor (den du mit git config festlegen konntest), der dich nach einer Commitnachricht fragt, und eine Liste in der die Dateien stehen die übergeben werden aufgelistet sind:

    Shell-Script: git commit: Commitnachricht

    1. # Please enter the commit message for your changes. Lines starting
    2. # with '#' will be ignored, and an empty message aborts the commit.
    3. # On branch master
    4. # Changes to be committed:
    5. # (use "git reset HEAD <file>..." to unstage)
    6. #
    7. # modified: hello.java

    Git braucht keine Commitnachricht, die bestimmten Formatierungsvorschriften folgt, allerdings ist normalerweise die erste Zeile eines Commits nicht länger als 50 Zeichen. Dann lässt man eine leere Zeile und gibt dann eine detaillierte Information, was geändert wurde:

    Quellcode

    1. Change the function of hello.java
    2. - Update the helloWorld() function to output "Hello!"
    3. - Update the byebyeWorld() function to output "Bye Bye!"

    Wichtig: Normalerweise werden Commitnachrichten immer im Präsens geschrieben, da es sich in der Vergangenheit so etabliert hat.

    Status einer Repository

    git status

    Das Kommando git status zeigt den aktuellen Status der Staging Area und des Arbeitsordners. Es lässt dich sehen, welche Änderungen bereits gestaget wurden, welche noch nicht und welche Dateien noch nicht von Git getrackt wurden. Status gibt keine Informationen über die übergebene Projekthistory aus. Dafür braucht man das Kommando git log.

    Benutzung

    git status

    Listet alle gestageten, nicht gestagten und nicht getrackten Dateien auf.

    Beispiel

    Man kann es als Good Practice ansehen, den Status der Repository immer zu checken, bevor man die Änderungen übergibt, damit man nicht aus Versehen Dateien übergibt, die noch gar nicht dafür gedacht waren. Dieses Beispiel zeigt den Status der Repository vor und nach einem neuen Commit an.

    Quellcode

    1. # Edit hello.world
    2. git status
    3. # hello.java is listed under "Changes not staged for commit"
    4. git add hello.world
    5. git status
    6. # hello.java is listed under "Changes to be commited"
    7. git commit
    8. git status
    9. # nothing to commit (working directory clean)

    Der erste Status wird die Dateien als nicht gestaget anzeigen. Das git add Kommando beeinflusst den zweiten git status und die finale Status-Ausgabe zeigt dir, dass es nichts mehr zu übergeben gibt - der Arbeitsordner ist exakt genau so, wie der letzte Commit.

    git log

    Das Kommando git log zeigt die bereits übergebenen Snapshots. Es zeigt dir die Projekthistory, lässt dich diese filtern oder nach speziellen Änderungen suchen. Während git status nur den Arbeitsordner und die Staging Area ansehen lässt, macht git log dies für die bereits übergebene History.

    Benutzung

    git log[tt]

    Zeigt die gesamte Commithistory mit der normalen Formatierung. Wenn das Log länger ist als dein Bildschirm ist kannst du die Leertaste nutzen um zu scrollen und q um dieses Log zu verlassen.

    [tt]git log -n <limit>

    Limitiert die Anzahl der Commits auf <limit>. Wenn du zum Beispiel git log -n 5 verwendest, werden dir nur 5 Commits angezeigt.

    git log --oneline

    Verringert jeden Commit auf eine Zeile. Dies ist nützlich, um eine schnelle Übersicht über die gesamte Projekthistory zu bekommen.

    git log --author="<author>"

    Sucht nach Commits von einem bestimmten Autor.

    git log --grep="<msg>"

    Sucht nach Commits mit der Nachricht, die <msg> beinhaltet.

    git log <since>..<until>

    Zeigt nur die Commits die zwischen <since> und <until> gemacht wurden. Beide Argumente können entweder eine Commit ID oder ein Branchname sein.

    [tt]git log <file>

    Zeigt dir nur die Commits, die eine Änderung am angegebenen <file> beinhalten. Dies ist der einfachste Weg um die History einer einzelnen Datei zu sehen.

    git log --graph --decorate --oneline

    Ein paar nützliche Optionen: Die Option --graph zeichnet einen textbasierten Graphen der Commits auf der linken Seite der Commitnachrichten. Die Option --decorate fügt den Namen der Branches oder der Tags des Commits an. --oneline zeigt alle Commit Informationen in einer einzigen Zeile.

    Beispiel

    Es können natürlich auch mehrere Argumente in einem einzigen Kommando benutzt werden:

    Quellcode

    1. git log --author="JustJofe" hello.java

    Dies zeigt dir alle Commits an die der User JustJofe gemacht hat und die Datei hello.java beinhalten.

    Die .. Syntax ist ein sehr nützliches Tool um Branches zu verleichen. Das nächste Beispiel zeigt alle Commits an, die in der Branch developer sind und nicht in master.

    Quellcode

    1. git log --oneline master..developer

    323 mal gelesen