Zum Inhalt springen

git push

Definition

Der Befehl git push lädt den Inhalt des lokalen Repositorys in das entfernte Repository hoch. Pushen ist das Gegenteil von Fetchen. Wenn git fetch den Inhalt in die lokalen Branches importiert, exportiert git push ihn in die entfernten Branches.

Verwendung von git push

Der Befehl git push wird häufig verwendet, um lokale Änderungen im zentralen Repository zu veröffentlichen. Nachdem die Änderungen im lokalen Repository vorgenommen wurden, kannst du git push verwenden, um die Änderungen mit anderen Teammitgliedern zu teilen. Der Befehl git push ist einer der Befehle, die am „Synchronisierungs“-Prozess beteiligt sind. Diese Befehle arbeiten mit den entfernten Branches, die mit dem Befehl git remote konfiguriert werden. Die Commits werden mit git push hochgeladen und mit git fetch und git pull heruntergeladen. Nachdem in beiden Fällen Änderungen vorgenommen wurden, wird git merge verwendet, um die Änderungen zu integrieren.

Die folgenden Diagramme zeigen den Fortschritt des lokalen Master-Branches über den Master-Branch des zentralen Repositorys hinaus und das Veröffentlichen von Änderungen durch Aufruf von git push origin master.

git push

Häufige Optionen

git push <remote> <branch>Schiebt den angegebenen Branch mit den erforderlichen Commits zu <remote> und erstellt einen Remote-Branch im Ziel-Repository.
git push <remote> --forceErzwingt das Pushen, selbst wenn dadurch ein Non-Fast-Forward-Update entsteht. Stelle sicher, dass niemand die Commits bereits gepullt hat, bevor du die Option --force verwendest.
git push <remote> --allSchiebt alle lokalen Branches in das entfernte Repository.
git push <remote> --tagsSchiebt die Tags aus den lokalen Branches in das entfernte Repository. Die Option --all schiebt die Tags nicht.

So pushst du in Bare-Repositories

Es ist sehr sicher, in Repositories zu pushen, die mit dem Flag --bare erstellt wurden, da dort das Bearbeiten von Dateien und das Committen von Änderungen in dieses Repository nicht erlaubt ist. Es wird empfohlen, zentrale Repositories als Bare-Repositories zu erstellen; andernfalls kann das Pushen in ein nicht-bares Repository Änderungen überschreiben.

Force-Pushing

Git kann deine Push-Anfrage ablehnen, wenn die Historie des zentralen Repositorys nicht mit der lokalen übereinstimmt. In diesen Fällen solltest du den entfernten Branch pullen und ihn in das lokale Repository mergen und dann erneut pushen. Das Flag --force überschreibt den entfernten Branch mit dem lokalen und verwirft dabei alle Upstream-Änderungen, die noch nicht gepullt wurden. Verwende Force-Push, wenn gemeinsame Commits falsch sind und mit git commit --amend oder einem interaktiven Rebase korrigiert werden. Bevor du die Option --force verwendest, stelle sicher, dass niemand die Commits bereits gepullt hat. Ein interaktiver Rebase ist auch eine gute Möglichkeit, Commits vor dem Teilen aufzuräumen. Der Befehl git commit --amend aktualisiert den vorherigen Commit. Wenn ein Commit geändert wird, schlägt git push fehl, weil Git den geänderten Commit und den entfernten Commit als auseinanderlaufenden Inhalt behandelt. Hier muss --force verwendet werden, um den geänderten Commit zu pushen.

git push --force

bash
# make changes to a repo and git add
git commit --amend
# update the existing commit message
git push --force origin master

So löschst du einen entfernten Branch

Hier ist ein Beispiel zum Löschen des entfernten Branches. Das mit einem Doppelpunkt vorangestellte branch_name bei git push löscht den entfernten Branch:

entfernten Branch löschen, git push

bash
git branch -D branch_name
git push origin :branch_name

Der Befehl git push origin :branch_name löscht den angegebenen Branch (branch_name) aus dem entfernten Repository (origin), indem eine leere Referenz dorthin gepusht wird.

So funktioniert es:

  1. git push: Änderungen aus deinem lokalen Git-Repository in ein entferntes Repository pushen
  2. origin: der Name des entfernten Repositorys
  3. :branch_name: ein Refspec, der eine leere Referenz darstellt und damit den angegebenen Branch effektiv aus dem entfernten Repository löscht

Wenn du also git push origin :branch_name ausführst, löscht Git den Branch branch_name aus dem entfernten Repository origin.

Beachte, dass dieser Befehl gefährlich sein kann, wenn er falsch verwendet wird, da er den Branch ohne Bestätigung oder Wiederherstellungsmöglichkeit löscht. Stelle sicher, dass du den Branchnamen noch einmal überprüfst und wirklich löschen möchtest, bevor du den Befehl ausführst.

Verwende das Flag -u für den ersten Push auf einem Branch

Wenn du einen lokalen Branch hast und ihn zum ersten Mal in das entfernte Repository pushen möchtest, solltest du angeben, welchen Branch des entfernten Repositorys du meinst. In Git wird das Flag -u zusammen mit dem Befehl git push verwendet, um den Upstream-Branch für den aktuellen Branch festzulegen. Wenn du das Flag -u verwendest, erstellt Git eine Verknüpfung zwischen deinem lokalen Branch und dem entfernten Branch. Diese Verknüpfung ist nützlich, um die Befehle git pull und git push in Zukunft zu vereinfachen, da Git sich merken kann, welcher entfernte Branch zu deinem lokalen Branch gehört.

Das Flag -u ist die Kurzform von --set-upstream. Wenn du dieses Flag verwendest, sieht das typischerweise so aus:

Verwende das Flag -u für den ersten Push auf einem Branch

bash
git push -u origin your-branch-name

Beispiele für einige der am häufigsten verwendeten Flags:

Hier sind einige Beispiele dafür, wie man einige der git push-Flags verwendet:

-f Flag:


bash
git push -f origin master

Dies erzwingt das Pushen des lokalen Branches master in das entfernte Repository origin und überschreibt dabei alle Änderungen, die möglicherweise am Branch master im entfernten Repository vorgenommen wurden. Verwende dieses Flag mit Vorsicht, da es Probleme verursachen kann, wenn mehrere Personen am selben Branch arbeiten.

--tags Flag:


bash
git push --tags origin

Dies schiebt alle Tags in das entfernte Repository origin. Tags werden verwendet, um wichtige Punkte in der Historie deines Projekts zu markieren, etwa Releases oder Meilensteine.

--all Flag:


bash
git push --all origin

Dies schiebt alle lokalen Branches in das entfernte Repository origin.

--dry-run Flag:


bash
git push --dry-run origin master

Dies simuliert einen Push zum Branch master des entfernten Repositorys origin, ohne tatsächlich etwas zu pushen. Das kann nützlich sein, um zu testen und zu prüfen, welche Änderungen gepusht würden, bevor man sie tatsächlich pusht.

--force-with-lease Flag:


bash
git push --force-with-lease origin master

Dies erzwingt das Pushen des lokalen Branches master in das entfernte Repository origin, stellt dabei aber sicher, dass du keine Änderungen überschreibst, die seit deinem letzten Pull möglicherweise am Branch master im entfernten Repository vorgenommen wurden. Dies ist eine sicherere Alternative zur Verwendung des Flags -f.

Practice

Welche Aussagen sind in Bezug auf den Befehl 'git push' wahr?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.