Close

Git kennenlernen mit Bitbucket Cloud

Ziel

In diesem Tutorial mit vermitteln wir dir anhand eines Weltraumszenarios die Grundlagen von Git.

Übersicht zur Aufgabe

Im Rahmen dieses Tutorials verschaffst du dir einen Überblick über sämtliche Raumstationen deines Teams und lernst so die Arbeit mit Git kennen. Es werden folgende Befehle behandelt:

  • "git clone", "git config", "git add", "git status", "git commit", "git push", "git pull", "git branch", "git checkout" und "git merge"

Zeit

30 Minuten

Zielpublikum

Du hast noch nie mit Git oder Bitbucket Cloud gearbeitet.


Git-Repositorys erstellen


Glückwunsch: Du wurdest zum Bitbucket-Raumstationadministrator ernannt. In dieser Rolle musst du perfekt organisiert sein. Alle Dateien, die du für deine Raumstationen erstellst, müssen an einem zentralen Ort gespeichert und für alle deine Teamkollegen zugänglich sein, und zwar ganz gleich, wo im Universum sie sich gerade befinden. In Bitbucket bedeutet das, sämtliche Dateien zu einem Repository hinzuzufügen. Im ersten Schritt erstellen wir also zunächst ein Repository.

Interessante Fakten über Repositorys

  • Du hast Zugriff auf alle Dateien in deinem lokalen Repository, unabhängig davon, ob du an einer oder mehreren Dateien arbeitest.
  • Du kannst auf öffentliche Repositorys auch ohne Bitbucket-Account zugreifen, wenn du die URL des entsprechenden Repositorys kennst.
  • Jedes Repository gehört zu einem Benutzer-Account oder einem Team. Gehört es zu einem Benutzer-Account, ist der Benutzer der Verantwortliche für das Repository. Gehört es zu einem Team, ist die verantwortliche Instanz das Team.
  • Nur der Verantwortliche für ein Repository kann das Repository löschen. Gehört das Repository zu einem Team, kann es von einem Administrator gelöscht werden.
  • Ein Codeprojekt kann aus einem einzigen Repository in einem einzigen Account bestehen oder auch aus mehreren Repositorys, die auf verschiedene Accounts verteilt sind.
  • Ein Repository darf maximal 2 GB groß sein. Wir empfehlen eine Größe von höchstens 1 GB.
Git-Logo
Zugehöriges Material

Git-Befehle

Bitbucket-Logo
Lösung anzeigen

Ein Repository einrichten

Schritt 1: Erstelle das Repository.

Ein neu in Bitbucket erstelltes Repository ist zunächst leer und enthält keinerlei Code. Das wird sich allerdings schnell ändern, da du ihm schon bald verschiedene Dateien hinzufügen wirst. Zukünftig wird das Bitbucket-Repository das zentrale Repository für deine Dateien sein. Andere Benutzer können auf dieses Repository zugreifen, wenn du ihnen das entsprechende Zugriffsrecht erteilst. Sobald du dein Repository erstellt hast, kopierst du eine Version des Repositorys auf dein lokales System. So kannst du deine Dateien in einem deiner Repositorys aktualisieren und die Änderungen in das jeweils andere Repository übertragen.

Zentrales git-Repository auf lokales git-Repository

Gehe wie folgt vor, um dein Repository zu erstellen:

1. Klicke in Bitbucket in der globalen Seitenleiste auf das Symbol + und wähle Repository.

Wähle das Repository in der Bitbucket-Seitennavigation aus

In Bitbucket wird die Seite Create a new repository (Neues Repository erstellen) angezeigt. Verschaffe dir zunächst einen Überblick über die Inhalte im Dialogfeld. Mit Ausnahme des Repository-Typs kannst du alle Eingaben auf dieser Seite später wieder ändern.

Erstelle ein neues Repository-Konfigurationsfenster in Bitbucket

2. Gib im Feld Name den Wert BitbucketStationLocations ein. Bitbucket verwendet diesen Namen in der URL des Repository. Beispiel: Der Benutzer the_best hat ein Repository namens awesome_repo. Die URL dieses Repositorys würde dann https://bitbucket.org/the_best/awesome_repo lauten.

3. Lasse unter Access level (Zugriffsstufe) das Kontrollkästchen This is a private repository (Dieses Repository ist privat) aktiviert. Ein privates Repository ist nur für dich selbst sichtbar sowie für alle Benutzer, denen du ein entsprechendes Zugriffsrecht erteilst. Wenn du das Kontrollkästchen nicht aktivierst, kann jeder dein Repository sehen.

4. Wähle als Repository type (Repository-Typ) die Option Git aus. Denke daran: Der Repository-Typ lässt sich nicht mehr ändern, sobald du auf Create repository (Repository erstellen) geklickt hast.

5. Klicke auf Create repository (Repository erstellen). Bitbucket erstellt nun dein Repository und führt es auf der Seite Overview (Übersicht) auf.

Schritt 2: Untersuche dein neues Repository.

Schaue dir nun dein neues Repository genauer an. Aktuell solltest du dich auf der Repository-Seite Overview (Übersicht) befinden:

Die Repository-Übersichtsseite in Bitbucket

Klicke in der globalen Seitenleiste auf +, um häufige Aktionen für ein Repository anzuzeigen. Klicke auf die Punkte in der Navigationsseitenleiste, um zu sehen, was sich hinter jedem dieser Links verbirgt, einschließlich der Einstellungen, in denen du die Repository-Details und weitere Einstellungen aktualisieren kannst. Um die zur Navigation dieser Punkte verfügbaren Tastaturkürzel anzuzeigen, drücke die ?-Taste auf deiner Tastatur.

Wenn du auf die Option Commits in der Seitenleiste klickst, wirst du feststellen, dass keine Commits angezeigt werden. Das war zu erwarten, weil du noch keine Inhalte für dein Repository erstellt hast. Aktuell ist dein Repository privat und du hast noch niemanden dazu eingeladen. Daher bis du als Repository-Besitzer aktuell der einzige, der Inhalte erstellen und bearbeiten kann.

Git-Repositorys kopieren und Dateien hinzufügen


Da du jetzt einen Ort hast, an dem du deine Space Station-Dateien hinzufügen und teilen kannst, muss es auch eine Möglichkeit geben, von deinem lokalen System darauf zuzugreifen. Um dies einzurichten, kopierst du das Bitbucket-Repository auf dein System. Bei Git wird der Kopiervorgang als Klonen bezeichnet. Wenn du ein Repository klonst, erstellst du eine Verbindung zwischen dem Bitbucket-Server (den Git als "origin" kennt) und deinem lokalen System.

Bitbucket Server "Ursprung" zu "lokales System"

Schritt 1: Klone dein Repository auf deinem lokalen System.

Öffne auf deinem Desktop ein Browserfenster und ein Terminalfenster. Gehe dann im Terminalfenster wie folgt vor:

1. Wechsle in dein Stammverzeichnis (~).

 $ cd ~

Sobald du Bitbucket häufiger verwendest, wirst du wahrscheinlich mit mehreren Repositorys arbeiten. Dann empfiehlt es sich, ein Verzeichnis zu erstellen, in dem du alle diese Repositorys zusammenfassen kannst.

2. Erstelle ein Verzeichnis für deine Repositorys.

 $ mkdir repos

3. Wähle über das Terminal das neue Repository-Verzeichnis als Arbeitsverzeichnis aus.

 $ cd ~/repos

4. Öffne in Bitbucket dein Repository BitbucketStationLocations.

5. Klicke in der globalen Seitenleiste auf das + -Symbol und wähle Clone this repository (Dieses Repository klonen) aus.

Bitbucket zeigt ein Pop-up-Dialogfeld zum Klonen an. In diesem Dialogfeld ist, je nach deinen Einstellungen, als Protokoll standardmäßig HTTPS oder SSH festgelegt. Für dieses Tutorial übernimmst du das festgelegte Standardprotokoll.

Ein Repository in Bitbucket klonen

6. Kopiere den hervorgehobenen Klonbefehl.

7. Füge den aus Bitbucket kopierten Befehl in dein Terminalfenster ein und drücke die Eingabetaste.

8. Gib dein Bitbucket-Passwort ein, wenn das Terminal danach fragt. Wenn du ein Konto erstellt hast, indem du auf Google verlinkt hast, verwende dein Passwort für dieses Konto.

  • Falls dir ein Windows-Passwortfehler angezeigt wird:
    • Bei einigen Versionen von Microsoft Windows und Git wird an dieser Stelle möglicherweise eine Fehlermeldung ähnlich der folgenden angezeigt:

      Beispiel für einen Passwortfehler beim Klonen unter Windows
$ git clone

https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git 

Cloning into 'bitbucketspacestation'...

fatal: could not read

Password for 'https://emmap1@bitbucket.org': No such file or directory
  • Wenn du diese Fehlermeldung erhältst, gib Folgendes in die Befehlszeile ein:
  $ git config --global core.askpass
  • Gehe dann zurück zu Schritt 4 und wiederhole das Klonen. Jetzt solltest du im Bash-Agent zur Eingabe deines Passworts aufgefordert werden. Die Passworteingabe sollte nur einmal erforderlich sein.

Die Ausgabe in deinem Terminalfenster sollte nun in etwa wie folgt aussehen:

$ cd ~/repos

$ git clone https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
Cloning into 'bitbucketstationlocations'...
Password
warning: You appear to have cloned an empty repository.
  • Natürlich wusstest du schon zuvor, dass dein Repository leer ist, denn du hast ja noch keine Quelldateien hinzugefügt.

9. Rufe eine Liste der Inhalte in deinem Repository-Verzeichnis ab. In der zurückgegebenen Liste sollte dein Verzeichnis bitbucketstationlocations aufgeführt sein.

$ ls

Perfekt. Damit hast du dein Repository erfolgreich auf dein lokales System geklont.

Schritt 2: Dateien zum lokalen Repository hinzufügen und in Bitbucket laden

Jetzt da das Repository auf deinem lokalen System verfügbar ist, kann die richtige Arbeit beginnen. Du willst in Zukunft jederzeit einen Überblick über alle deine Raumstationstandorte haben. Zu diesem Zweck erstellst du nun eine Datei mit allen deinen Standorten.

1. Wechsle in dein Terminalfenster und navigiere zur obersten Ebene deines lokalen Repositorys.

 $ cd ~/repos/bitbucketstationlocations/

2. Gib die folgende Zeile in das Terminalfenster ein, um eine neue Datei mit Inhalt zu erstellen.

$ echo "Earth's Moon" >> locations.txt

Wenn die Befehlszeile keine Antwort zurückgibt, hast du die Datei korrekt erstellt.

3. Rufe den Status deines lokalen Repositorys ab. Der Befehl git status gleicht dein Projekt mit deinem Bitbucket-Repository ab.

Git meldet, dass du eine neue Datei erstellt hast. Die entsprechende Ausgabe sieht in etwa wie folgt aus:

$ git status 
 On branch main
 Initial commit
 Untracked files:
   (use "git add <file>..." to include in what will be committed)
     locations.txt
 nothing added to commit but untracked files present (use "git add" to track)

Die Datei wird nicht verfolgt. Das bedeutet: Git interpretiert die Datei nicht als Teil eines früheren Commits. In der Statusausgabe wirst du auch auf den nächsten Schritt hingewiesen: Du musst die Datei hinzufügen.

4. Weise Git an, deine neue Datei locations.txt nachzuverfolgen. Verwende hierzu den Befehl git add. Genau wie bei der Dateierstellung gilt: Bei korrekter Eingabe gibt der Befehl git add keine Ausgabe zurück.

$ git add locations.txt

Der Befehl git add fügt eine Änderung im Arbeitsverzeichnis zum Staging-Bereich hinzu. In der Staging-Umgebung erstellst du einen Snapshot eines Satzes von Änderungen, bevor du diese Änderungen per Commit in den offiziellen Verlauf überträgst.

Arbeitsverzeichnis zu Staging Area

5. Überprüfe den Status der Datei.

 $ git status 
 On branch main
 Initial commit
 Changes to be committed:
   (use "git rm --cached <file>..." to unstage)
     new file: locations.txt

Wie du siehst, wurde die neue Datei hinzugefügt. Sie befindet sich also in der Staging-Umgebung und du kannst sie committen, sobald du dazu bereit bist. Der Befehl git status gibt den Status des Arbeitsverzeichnisses und den Status des Snapshots in der Staging-Umgebung zurück.

6. Gib den Befehl git commit mit einer Commit-Nachricht aus, wie in der nächsten Zeile gezeigt. Das "-m" bedeutet, dass eine Commit-Nachricht folgt.

$ git commit -m 'Initial commit' 
 [main (root-commit) fedc3d3] Initial commit
  1 file changed, 1 insertion(+)
  create mode 100644 locations.txt

Der Befehl git commit committet den Snapshot aus der Staging-Umgebung in den Projektverlauf. Zusammen mit git add bildet er den grundlegenden Workflow für alle Git-Benutzer.

Staging-Umgebung zu Commit-Historie

Alle Änderungen, die du bis jetzt vorgenommen hast, sind auf deinem lokalen System gespeichert. Sie werden erst in deinem Bitbucket-Repository sichtbar, wenn du sie dorthin pushst.

  • Interessante Fakten über Git und Remote-Repositorys
    • Git unterstützt die Kommunikation mit Remote-Repositorys (in deinem Fall Bitbucket). Diese Kommunikation bildet die Grundlage für jeden Git-basierten Zusammenarbeits-Workflow.
    • Im Zusammenarbeitsmodell von Git hat jeder Entwickler eine eigene Kopie des Repositorys zur Verfügung, inklusive eines eigenen lokalen Verlaufs und einer eigenen lokalen Branch-Struktur. In der Regel müssen Benutzer eine Reihe aufeinanderfolgender Commits veröffentlichen, kein einzelnes Changeset. Mit Git committest du keine Changesets von einer Arbeitskopie zum zentralen Repository, sondern kannst ganze Branches zwischen Repositorys teilen.
Drei Repositorys mit Pfeilen verbunden
  • Du kannst Verbindungen mit anderen Repositorys verwalten und deinen lokalen Verlauf veröffentlichen, indem du deinen Branch in andere Repositorys pushst. Wenn du die Arbeit von Teamkollegen sehen möchtest, pullst du deren Branches in dein lokales Repository.

7. Wechsle wieder in dein lokales Terminalfenster und sende mit git push origin main alle committeten Änderungen an Bitbucket. Dieser Befehl pusht die Änderungen in den Haupt-Branch (Bitbucket-Branch) auf "origin" (Bitbucket-Server).

Die Antwort sollte in etwa wie folgt aussehen:

 $ git push origin main 
 Counting objects: 3, done.
 Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
 Total 3 (delta 0), reused 0 (delta 0) To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
  * [new branch] main -> main
 Branch main set up to track remote branch main from origin.

Deine Commits befinden sich jetzt im Remote-Repository ("origin").

Lokales System zum Bitbucket-Server "Ursprung"

8. Wechsle zu deinem Repository BitbucketStationLocations in Bitbucket.

9. Wenn du in der Seitenleiste auf Commits klickst, wird dir ein einzelner Commit in deinem Repository angezeigt. Bitbucket fügt alles, was du gerade gemacht hast, in diesem Commit zusammen und zeigt ihn dir an. In der Spalte Author (Autor) wird dir der Wert angezeigt, den du zur Konfiguration der globalen Git-Datei ( ~/.gitconfig) verwendet hast.
Wenn du in der Seitenleiste auf Source (Quelle) klickst, siehst du, dass sich in deinem Repository eine einzelne Quelldatei befindet, nämlich die Datei locations.txt,die du eben hinzugefügt hast.

Git-Commit-Quelle in Bitbucket

Erinnerst du dich, wie das Repository aussah, als du es erstellt hast? Wahrscheinlich sieht es jetzt etwas anders aus.

Änderungen aus Git-Repositorys in Bitbucket Cloud pullen


Deine nächste Aufgabe als Raumstationadministrator: Du musst eine Datei mit detaillierteren Informationen zu deinen Standorten anlegen. Da du aktuell noch nicht allzu viele Standorte hast, kannst du sie direkt aus Bitbucket hinzufügen.

Schritt 1: Erstelle eine Datei in Bitbucket.

Gehe wie folgt vor, um deine neue Standortdatei hinzuzufügen:

1. Klicke in deinem BitbucketStationLocations-Repository auf Source, um das Quellverzeichnis zu offen. In deinem Verzeichnis wird aktuell nur eine Datei angezeigt: locations.txt.

BitbucketStationSupplies-Bildschirm in Bitbucket

A. Seite "Source" (Quelle): Klicke auf den Link, um diese Seite zu öffnen.
B. Branch-Auswahl: Wähle den Branch aus, den du anzeigen möchtest.
C. Schaltfläche "Weitere Optionen": Klicke auf diese Schaltfläche, um ein Menü mit weiteren Optionen zu öffnen, z. B. "Datei hinzufügen".D. Bereich "Source file" (Quelldatei): Zeige das Dateiverzeichnis in Bitbucket an.

2. Klicke auf der Seite Source (Quelle) in der rechten oberen Ecke auf die Schaltfläche More options (Weitere Optionen) und wähle Add file (Datei hinzufügen) aus dem Menü aus. Die Schaltfläche More options (Weitere Optionen) wird nur angezeigt, nachdem du dem Repository mindestens eine Datei hinzugefügt hast.

Eine Seite zum Erstellen der neuen Datei wird geöffnet, wie im folgenden Bild gezeigt.

Eine Datei in Bitbucket erstellen

A. Branch mit neuer Datei: Ändere diese Option, wenn du eine Datei zu einem anderen Branch hinzufügen möchtest.B. New file area (Bereich für neue Datei): Füge hier Inhalte für deine neue Datei hinzu.

3. Trage in das Feld filename (Dateiname) die Zeichenfolge stationlocations ein.

4. Wähle aus der Liste Syntaxmodus die Option HTML aus.

5. Füge den folgenden HTML-Code in das Textfeld ein:

 <p>Bitbucket has the following space stations:</p>
 <p>
     <b>Earth's Moon</b><br>
     Headquarters
 </p>

6. Klicke auf Commit (Committen). Das Feld Commit message (Commit-Nachricht) wird angezeigt, mit folgender Nachricht: stationlocations created online with Bitbucket.

7. Klicke unter dem Nachrichtenfeld auf Commit.

Damit hast du eine neue Datei in Bitbucket erstellt und wirst zur Seite mit den Details des Commits weitergeleitet. Dort kannst du die Änderung sehen, die du gerade vorgenommen hast:

Seite mit Details zum Commit in Bitbucket

Klicke in der Seitenleiste auf Commits, wenn du eine Liste aller Commits aufrufen möchtest, die du bisher durchgeführt hast.

Schritt 2: Pulle Änderungen von einem Remote-Repository.

Nun musst du die neue Datei in dein lokales Repository übertragen. Das funktioniert ganz unkompliziert. Im Grunde genommen kehrst du einfach nur den Push um, mit dem du die Datei locations.txt in Bitbucket geladen hast.

Um die Datei in dein lokales Repository zu pullen, gehst du wie folgt vor:

1. Öffne dein Terminalfenster und navigiere zum obersten Level deines lokalen Repository.

 $ cd ~/repos/bitbucketstationlocations/

2. Gib den Befehl git pull --all ein, um alle Änderungen aus Bitbucket zu pullen. (In komplexeren Branch-Workflows ist es unter Umständen nicht ratsam, alle Änderungen zu pullen und zu mergen.) Gib dein Bitbucket-Passwort ein, sobald du dazu aufgefordert wirst. Die Ausgabe im Terminal sollte in etwa wie folgt aussehen:

$ git pull --all
 Fetching origin
 remote: Counting objects: 3, done.
 remote: Compressing objects: 100% (3/3), done.
 remote: Total 3 (delta 0), reused 0 (delta 0)
 Unpacking objects: 100% (3/3), done.
 From https://bitbucket.org/emmap1/bitbucketstationlocations
    fe5a280..fcbeeb0 main -> origin/main
 Updating fe5a280..fcbeeb0
 Fast-forward
  stationlocations | 5 ++++++++++++++
  1 file changed, 5 insertions(+)
  create mode 100644 stationlocations

Mit git pull wird die Datei aus deinem Remote-Repository (Bitbucket) über einen einzigen Befehl mit deinem lokalen Repository zusammengeführt.

Bitbucket Server "Ursprung" zu "lokales System"

3. Wechsle in den Ordner deines Repositorys auf deinem lokalen System. Dort wird nun die gerade hinzugefügte Datei angezeigt.

Sehr gut! Nachdem du jetzt die beiden Dateien mit dem Standort deiner Raumstation hinzugefügt hast, hast du einmal den grundlegenden Git-Workflow zwischen Bitbucket und deinem lokalen System durchgespielt: Klonen, Hinzufügen, Committen, Pushen und Pullen.

Datei-Merges mit einem Git-Branch durchführen


Als Raumstationadministrator hast du eine ganze Reihe von Verantwortlichkeiten. Manchmal musst du beispielsweise dafür sorgen, dass Informationen für Unbefugte unzugänglich sind, insbesondere bei der Suche nach neuen Standorten im Sonnensystem. Wenn du mit Branches umgehen kannst, kannst du deine Dateien aktualisieren und Informationen gezielt erst dann veröffentlichen, wenn du dazu bereit bist.

Am effektivsten sind Branches bei Teamprojekten. Du kannst in einem separaten Branch an deinem eigenen Teil des Projekts arbeiten, Updates aus Bitbucket pullen und deine gesamte Arbeit mit dem Haupt-Branch zusammenführen, sobald du dazu bereit bist. In unserer Dokumentation findest du detailliertere Erläuterungen zu den Vorteilen von Branches.

Ein Branch ist eine unabhängige Entwicklungslinie innerhalb deines Repositorys. Stell ihn dir vor wie ein komplett neues Arbeitsverzeichnis inklusive neuer Staging-Umgebung und neuem Projektverlauf. Bevor du neue Branches erstellst, wird zunächst automatisch ein Haupt-Branch angelegt (Main). Das Schaubild unten zeigt diesen Haupt-Branch sowie einen weiteren Branch mit einem Bugfix-Update.

Branch mit Bug Fix und Main-Branch

Schritt 1: Branch erstellen und eine Änderung vornehmen

Nun erstellst du einen Branch, dem du alle zukünftigen Pläne für deine Raumstationen hinzufügen kannst, die du noch nicht committen möchtest. Sobald du zur Veröffentlichung dieser Pläne bereit bist, kannst du deine Änderungen mit deinem Bitbucket-Repository zusammenführen (Merge) und den nicht mehr benötigten Branch löschen.

Führe dir dabei immer vor Augen: Branches sind lediglich Pointer, die auf Commits verweisen. Wenn du einen Branch erstellst, muss Git nur einen neuen Pointer erstellen. Es wird kein komplett neuer Satz von Dateien oder Ordnern angelegt. Zu Beginn sieht dein Repository so aus:

Vier verbundene Punkte, der ganz rechts ist als "main" beschriftet

Gehe wie folgt vor, um einen Branch zu erstellen:

1. Wechsle in dein Terminalfenster und navigiere mit dem folgenden Befehl zur obersten Ebene deines lokalen Repositorys:

cd ~/repos/bitbucketstationlocations/

2. Erstelle über das Terminalfenster einen Branch.

$ git branch future-plans

Mit diesem Befehl erstellst du einen Branch, wechselst aber zu diesem Zeitpunkt noch nicht in diesen Branch. Dein Repository sieht also ungefähr wie folgt aus:

Vier miteinander verbundene Punkte, die ganz rechts sind als "main" und "Future-plans" markiert

Der Repository-Verlauf bleibt unverändert. Es wird lediglich ein neuer Pointer zum aktuellen Branch implementiert. Wenn du in dem neuen Branch arbeiten möchtest, musst du ihn zunächst auschecken.

3. Checke den gerade erstellten neuen Branch aus, um in ihm arbeiten zu können:

$ git checkout future-plans 
Switched to branch 'future-plans'

Die Befehle git checkout und git branch greifen eng ineinander. Da Branches spezifisch für die Arbeit an neuem Code erstellt werden, solltest du jeden mit git branch neu erstellten Branch mit git checkout auschecken, bevor du ihn verwendest. Nach dem Auschecken des neuen Branches sieht dein Git-Workflow in etwa wie folgt aus:

Zukunftspläne, die vom Main-Branch abzweigen

4. Navigiere auf deinem lokalen System zum Ordner bitbucketstationlocations und öffne ihn. Wie du siehst, wurden durch die Erstellung des neuen Branches keine zusätzlichen Dateien oder Ordner in dem Verzeichnis angelegt.

5. Öffne die Datei stationlocations in einem Texteditor.

6. Ändere die Datei, indem du einen weiteren Stationsstandort hinzufügst:

<p>Bitbucket has the following space stations:</p>
<p>
   <b>Earth's Moon</b><br>
   Headquarters
</p>
<p>
   <b>Mars</b><br>
   Recreation Department
</p>

7. Speichere die Datei und schließe sie.

8. Gib git status im Terminalfenster ein. Die resultierende Ausgabe wird in etwa wie folgt aussehen:

$ git status 
On branch future-plans
Changes not staged for commit:
 (use "git add <file>..." to update what will be committed)
 (use "git checkout -- <file>..." to discard changes in working directory)
   modified: stationlocations
no changes added to commit (use "git add" and/or "git commit -a")

Entscheidend ist hier die Zeile On branch future-plans. Als du zuvor git status eingegeben hast, lautete diese Zeile noch On branch main, weil nur der Main Branch angelegt war. Wann immer du eine Änderung in die Staging-Umgebung verschieben oder committen möchtest, solltest du zuerst diese Zeile überprüfen und dich vergewissern, dass der Branch, dem du die Änderung hinzufügen möchtest, auch ausgecheckt ist.

9. Lade deine Datei in die Staging-Umgebung.

$ git add stationlocations

10. Gib den Befehl git commit wie unten dargestellt in das Terminalfenster ein:

$ git commit stationlocations -m 'making a change in a branch' 
[future-plans e3b7732] making a change in a branch
1 file changed, 4 insertions(+)

Mit diesem neuesten Commit sieht dein Repository etwa wie folgt aus:

Zukunftspläne werden in den Main Branch commited

Jetzt musst du die gerade vorgenommene Änderung mit dem main-Branch zusammenführen, d. h. einen Merge durchführen.

Schritt 2: Merge deinen Branch: Fast-Forward-Merging

Du baust deinen Verbund an Raumstationen immer weiter aus und möchtest nun deinen Standort auf dem Mars mit einer feierlichen Zeremonie eröffnen. Da du deine Zukunftspläne damit jetzt in die Realität umsetzt, kannst du den Branch future-plans mit dem Haupt-Branch auf deinem lokalen System zusammenführen.

Da du nur einen einzigen Branch erstellt und nur eine einzige Änderung vorgenommen hast, kannst du zur Zusammenführung die Fast-Forward-Methode auf den Branch anwenden. Ein solcher Fast-Forward-Merge ist möglich, weil ein linearer Pfad von der Spitze des aktuellen Branches zum Ziel-Branch existiert. Statt die Branches tatsächlich zusammenzuführen, muss Git zur Integration der verschiedenen Verläufe lediglich die Spitze des aktuellen Branches an die Spitze des Ziel-Branches verschieben ("fast-forward"). Dadurch werden die Verläufe miteinander kombiniert und alle Commits aus dem Ziel-Branch sind auch über den aktuellen Branch zugänglich.

Mergen von Zukunftsplänen und Haupt-Branch

Der beschriebene Branch-Workflow wird häufig für kurzlebige Themen-Branches mit kleineren Änderungen verwendet, seltener für langlebigere Features.

Gehe wie folgt vor, um einen Fast-Forward-Merge durchzuführen:

1. Wechsle in dein Terminalfenster und navigiere zur obersten Ebene deines lokalen Repositorys.

 $ cd ~/repos/bitbucketstationlocations/

2. Überprüfe mit dem Befehl git status, ob du alle deine Änderungen committet hast und welchen Branch du ausgecheckt hast.

$ git status 
On branch future-plans
nothing to commit, working directory clean

3. Wechsle in den main-Branch.

$ git checkout main 
Switched to branch 'main'
Your branch is up-to-date with 'origin/main'.

4. Führe die Änderungen aus dem future-plans-Branch per Merge mit dem main-Branch zusammen. Dies sollte in etwa so aussehen:

$ git merge future-plans 
Updating fcbeeb0..e3b7732
Fast-forward
stationlocations | 4 ++++
1 file changed, 4 insertions(+)

Im Grunde genommen hast du damit den Pointer zum main-Branch an die aktuelle Kopfposition verschoben. Dein Repository sieht nun ungefähr wie der oben abgebildete Fast-Forward-Merge aus.

5. Da du den Branch future-plans nicht mehr verwenden wirst, kannst du ihn nun löschen.

$ git branch -d future-plans 
Deleted branch future-plans (was e3b7732).

Nachdem du den future-plans-Branch gelöscht hast, kannst du immer noch mithilfe einer Commit-ID über den main-Branch auf ihn zugreifen. Möchtest du beispielsweise die aus future-plans hinzugefügten Änderungen rückgängig machen, kannst du mithilfe der gerade erhaltenen Commit-ID zu diesem Branch zurückkehren.

6. Rufe mit git status die Ergebnisse des Merge ab. Wie du siehst, ist dein lokales Repository deinem Remote-Repository jetzt um 1 Commit voraus. Dies sollte in etwa so aussehen:

$ git status 
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
 (use "git push" to publish your local commits)
nothing to commit, working directory clean

Bisher hast du folgende Schritte durchgeführt:

  • Du hast einen Branch erstellt und ausgecheckt.
  • Du hast eine Änderung in deinem neuen Branch vorgenommen.
  • Du hast die Änderung per Commit in den neuen Branch übertragen.
  • Du hast die Änderung zurück in den Haupt-Branch überführt.
  • Du hast den nicht mehr verwendeten Branch gelöscht.

Im nächsten Schritt musst du deine Arbeit wieder in dein Remote-Repository pushen (Bitbucket).

Schritt 3: Pushe deine Änderungen in Bitbucket.

Jeder soll den neuen Raumstationstandort sehen können. Damit das möglich ist, kannst du den aktuellen Status deines lokalen Repositorys per Push an Bitbucket übertragen.

Das Schaubild unten verdeutlicht den Prozess. Du siehst, was geschieht, wenn in deinem lokalen Repository Änderungen vorhanden sind, die im zentralen Repository fehlen, und du diese Änderungen in Bitbucket pushst.

Änderungen werden sowohl im lokalen als auch im Haupt-Repository widergespiegelt

Gehe wie folgt vor, um deine Änderung in das Remote-Repository zu pushen:

1. Wechsle in das Repository-Verzeichnis und gib dort git push origin main in das Terminalfenster ein, um die Änderungen zu pushen. Die resultierende Ausgabe sieht in etwa so aus:

$ git push origin main
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 401 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
  fcbeeb0..e3b7732 main -> main

2. Öffne in deinem Bitbucket-Repository die Seite Übersicht. Der Push ist hier unter Aktuelle Aktivitäten aufgeführt.

3. Klicke auf Commits. Hier ist der Commit aufgelistet, den du auf deinem lokalen System durchgeführt hast. Wie du siehst, ist die Commit-ID identisch mit der Commit-ID auf deinem lokalen System.

Aktivitätenübersicht der letzten Commits in Bitbucket

Außerdem ist die Linie links neben der Commit-Liste gerade und durchgehend, ohne Branches. Warum? Es gab zu keinem Zeitpunkt Interaktionen zwischen dem Branch future-plans und dem Remote-Repository, nur zwischen dem Remote-Repository und der Änderung, die du vorgenommen und committet hast.

4. Klicke auf Branches. Auch hier wird der Branch nicht aufgeführt.

5. Klicke auf Quelle und dann auf die Datei stationlocations. Die letzte Änderung an der Datei hat dieselbe Commit-ID wie der eben durchgeführte Push.

6. Klicke auf die Dateiverlaufliste, um alle Änderungen zu sehen, die für die Datei committet wurden. Dein Bildschirm sollte etwa wie folgt aussehen:

Dateiverlaufliste in Bitbucket

Du bist fertig!

Du fragst dich, wie du dir alle diese neuen Git-Befehle merken sollst? Keine Sorge. Lege einfach unsere Seite mit den grundlegenden Git-Befehlen in deinen Favoriten ab. Hier kannst du jederzeit nachsehen, wenn du unsicher bist.


Diesen Artikel teilen

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up