Git Push verstehen und Anwendungsfälle

Das Pushing in Git bedeutet, dass lokale Commits in ein Remote-Repository übertragen werden. Dadurch werden deine Änderungen für andere sichtbar und das Projekt bleibt synchron. Während git push lokale Änderungen hochlädt, ruft git pull Updates vom Remote ab und integriert sie in deinen aktuellen Branch. Dieses Zusammenspiel von Push und Pull ist entscheidend, um Beiträge in verteilten Workflows zu verwalten. In diesem Leitfaden wird erklärt, wie git push in Szenarien wie GitHub, Bare-Repositories und Force-Push-Workflows funktioniert – inklusive Beispielen und den gängigen Optionen wie -u, --tags und --force.

Schnellreferenz Beispiele

# lokalen main-Branch ins origin-Remote pushen
$ git push origin main

# den dev-Branch pushen und mit origin/dev für zukünftige Pushes verknüpfen
$ git push -u origin dev

# alle lokalen Git-Tags ins Remote hochladen
$ git push --tags

# den Branch old-feature im Remote löschen
$ git push --delete origin old-feature

Dies sind die am häufigsten verwendeten Push-Befehle in Git. Im Folgenden wird erläutert, wie sie funktionieren und wann sie sinnvoll eingesetzt werden.

Änderungen zu GitHub pushen

Der Befehl git push überträgt deine lokalen Commits in ein Remote-Repository wie GitHub. Damit wird der Remote-Branch auf den neuesten Stand gebracht und deine Mitwirkenden sehen die Änderungen.

Befehls-Syntax

  • <REMOTE>: Meistens origin, der Standardname für das Remote.
  • <BRANCH>: Der Branch, der aktualisiert werden soll, z. B. main oder feature/login.
  • [OPTIONEN]:
    • -u / --set-upstream: Legt das Standard-Remote und den Branch für künftige Pushes fest.
    • -f / --force: Ersetzt die Historie des Remote-Branches durch die lokale.
    • --all: Pusht alle lokalen Branches.
    • --tags: Pusht alle annotierten Tags.

Befehlsschritte

Alle Dateien im Arbeitsverzeichnis zum Commit vormerken:

Eine bestimmte Datei vormerken:

Änderungen mit einer Nachricht committen:

$ git commit -m "Neue Funktion hinzugefügt"

Überprüfen, ob das Remote konfiguriert ist:

Beispielausgabe:

origin  git@github.com:username/repository.git (fetch)
origin  git@github.com:username/repository.git (push)

In den Branch main pushen und diesen als Standard für künftige Pushes festlegen:

Beispielausgabe:

Branch 'main' set up to track remote branch 'main' from 'origin'.

Ab jetzt reicht der Befehl:

Änderungen in Bare-Repositories pushen

Ein Bare-Repository ist ein Git-Repository ohne Arbeitsverzeichnis. Es enthält nur die Versionshistorie und dient meist als zentrales Repository auf einem Server. Entwickler können Code daraus pushen oder pullen, aber keine Dateien direkt bearbeiten.

Schritte zum Pushen in ein Bare-Repository

Per SSH mit dem Server verbinden:

$ ssh benutzername@server_ip

Zum Speicherort der Repositories wechseln:

$ cd /pfad/zu/deinen/repositories/

Ein neues Bare-Repository anlegen:

$ git init --bare dein-projekt.git

Beispielausgabe:

Initialized empty Git repository in /root/git-repos/dein-projekt.git/

SSH-Sitzung beenden:

Auf dem lokalen System das Bare-Repository als Remote hinzufügen:

$ git remote add bare-server benutzername@server_ip:/pfad/zu/deinen/repositories/dein-projekt.git

Konfiguration überprüfen:

Beispielausgabe:

bare-server  benutzer@server:/pfad/zu/dein-projekt.git (fetch)
bare-server  benutzer@server:/pfad/zu/dein-projekt.git (push)

Den lokalen master-Branch ins Bare-Repository pushen:

$ git push bare-server master

Beispielausgabe:

To server:/pfad/dein-projekt.git
 * [new branch]      master -> master

Force Push Änderungen

Ein Force Push wird eingesetzt, wenn sich die lokale Branch-Historie von der des Remotes unterscheidet – typischerweise nach dem Zusammenfassen von Commits, einem Rebase oder dem Umschreiben der Historie. Mit einem Force Push wird der Remote-Branch an den lokalen Stand angepasst.

Warnung

Das Flag --force überschreibt die Historie des Remote-Branches. Verwende es nur, wenn du sicher bist, dass niemand anderes Änderungen gepusht hat. Für eine sicherere Zusammenarbeit empfiehlt sich --force-with-lease, das versehentliches Überschreiben verhindert.

Falls du nach einem Rebase, Squash oder einem geänderten Commit die Remote-Historie überschreiben musst, verwende einen der folgenden Force-Push-Befehle.

Den lokalen Branch erzwingen, um die Remote-Historie zu überschreiben:

$ git push --force origin main

Eine sicherere Variante nutzen, um Änderungen anderer nicht zu überschreiben:

$ git push --force-with-lease origin main

--force-with-lease wird nur ausgeführt, wenn der Remote-Branch noch dem lokalen Stand entspricht.

Falls du den letzten Commit mit folgendem Befehl geändert hast:

dann aktualisiere den Remote-Branch, um den geänderten Commit widerzuspiegeln:

$ git push --force-with-lease origin main

Fazit

Du hast gelernt, wie man lokale Commits mit git push sowohl nach GitHub als auch in Bare-Repositories überträgt – einschließlich dem Vormerken von Änderungen, dem Setzen von Upstream-Branches, dem Überprüfen der Remote-Konfiguration und dem Einsatz von Force Push, wenn nötig. Mit diesen Vorgehensweisen kannst du deine lokale Arbeit zuverlässig mit Remotes synchronisieren und eine saubere, kollaborative Git-Historie beibehalten.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: