Frage Wie erstellst du einen Remote-Git-Zweig?


Ich habe einen lokalen Zweig erstellt, den ich stromaufwärts "schieben" möchte. Es gibt eine ähnliche Frage in Stack Overflow zum Nachverfolgen einer neu erstellten Remote-Verzweigung.

Mein Workflow ist jedoch etwas anders. Zuerst Ich möchte eine lokale Zweigstelle erstellen und werde sie nur dann nach oben schieben, wenn ich zufrieden bin und meine Zweigstelle teilen möchte.

  • Wie würde ich das tun? (Meine Google-Suche schien nichts einzubringen).
  • Wie würde ich meinen Kollegen sagen, sie aus dem Upstream-Repository zu holen?

UPDATE Mit Git 2.0 gibt es eine einfachere Antwort Ich habe unten geschrieben: https://stackoverflow.com/a/27185855/109305


2705
2017-10-05 09:21


Ursprung


Antworten:


Zuerst erstellen Sie Ihren Zweig lokal:

git checkout -b <branch-name> # Create a new branch and check it out

Der Remote-Zweig wird automatisch erstellt, wenn Sie ihn an den Remote-Server senden. Wenn Sie sich darauf vorbereitet haben, können Sie einfach Folgendes tun:

git push <remote-name> <branch-name> 

Woher <remote-name> ist typisch origin, der Name, den git der Fernbedienung gibt, aus der du geklont hast. Ihre Kollegen würden dann einfach diesen Zweig ziehen und er wird automatisch lokal erstellt.

Beachten Sie jedoch, dass das Format formal lautet:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Wenn Sie jedoch eine davon auslassen, wird davon ausgegangen, dass beide Verzweigungsnamen identisch sind. Nachdem ich dies gesagt habe, als ein Wort von VorsichtMachen Sie nicht den kritischen Fehler, nur zu spezifizieren :<remote-branch-name> (mit dem Doppelpunkt), oder der entfernte Zweig wird gelöscht!

So dass eine nachfolgende git pull wissen, was zu tun ist, möchten Sie vielleicht stattdessen verwenden:

git push --set-upstream <remote-name> <local-branch-name> 

Wie unten beschrieben, --set-upstream Option richtet einen Upstream-Zweig ein:

Für jeden Zweig, der aktuell ist oder   erfolgreich geschoben, upstream hinzufügen   (Tracking) Referenz, verwendet von   argument-less git-pull (1) und andere   Befehle.


3288
2017-10-05 09:29



Zuerst müssen Sie Ihren Zweig lokal erstellen

git checkout -b your_branch

Danach können Sie lokal in Ihrer Zweigstelle arbeiten, wenn Sie bereit sind, die Zweigstelle zu teilen, drücken Sie sie. Der nächste Befehl drückt den Zweig zum Ursprung des Remote-Repositorys und verfolgt ihn

git push -u origin your_branch

Teammitglieder können deine Filiale erreichen, indem sie

git fetch
git checkout origin/your_branch

Du kannst weiter in der Zweigstelle arbeiten und immer drängen, ohne Argumente an git push zu übergeben (argumentless git push wird den Master an remote master, your_branch local an remote your_branch, etc ...)

git push

Teammitglieder können durch Commits zu Ihrem Zweig wechseln und dann explizit drücken

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

Oder die Verzweigung verfolgen, um die Argumente zu vermeiden, um Push zu schieben

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

796
2017-07-26 01:09



Einfache Git 2.0 + Lösung:

Ab Git 2.0 ist das Verhalten einfacher geworden:

Sie können Git mit konfigurieren push.default = current um das Leben zu erleichtern:

Ich habe das so hinzugefügt, jetzt kann ich einfach einen neuen Zweig mit upstream schieben

$ git push -u

-u verfolgt den entfernten Zweig desselben Namens. Nein, mit dieser Konfiguration werden Sie die Remote-Referenz auf Git Push automatisch erraten. Von git.config Dokumentation:

push.default 

Definiert die Aktion, die git push ausführen soll, wenn keine refspec explizit angegeben wird.

push.default = current - Drücken Sie den aktuellen Zweig, um einen Zweig mit dem zu aktualisieren   gleicher Name auf der Empfängerseite. Funktioniert sowohl in zentralen als auch in nicht zentralen Workflows.

Für mich ist das eine gute Vereinfachung meines täglichen Git-Workflows. Die Konfigurationseinstellung kümmert sich um den "üblichen" Anwendungsfall, in dem Sie einen Zweig lokal hinzufügen und ihn remote erstellen möchten. Außerdem kann ich lokale Niederlassungen einfach von Fernbedienungen aus erstellen git co remote_branch_name (im Gegensatz zur Verwendung von --set-upstream-to Flagge).

Ich kenne diese Frage und die angenommenen Antworten sind ziemlich alt, aber das Verhalten hat sich geändert, so dass jetzt Konfigurationsoptionen vorhanden sind, um Ihren Workflow zu vereinfachen.

Führen Sie Folgendes in der Befehlszeile aus, um Ihre globale Git-Konfiguration hinzuzufügen:

$ git config --global push.default current

241
2017-11-28 09:46



Wie in den vorherigen Antworten angegeben,

git push <remote-name> <local-branch-name>:<remote-branch-name>

ist genug, um einen lokalen Zweig zu drücken.

Ihre Kollegen können alle Remote-Zweige (einschließlich neuer) mit diesem Befehl abrufen:

git remote update

Dann, um Änderungen an der Verzweigung vorzunehmen, der übliche Ablauf:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

65
2017-12-27 14:12



Erstellen Sie einen neuen Zweig lokal basierend auf dem aktuellen Zweig:

git checkout -b newbranch

Übernehmen Sie alle Änderungen wie gewohnt. Dann drücken Sie es stromaufwärts:

git push -u origin HEAD

Dies ist eine Verknüpfung, um den aktuellen Zweig in einen Zweig desselben Namens zu verschieben origin und verfolgen Sie es, so dass Sie nicht angeben müssen origin HEAD in der Zukunft.


48
2018-02-24 14:58



Wenn Sie nur Remote-Zweig erstellen möchten, ohne den lokalen zu haben, können Sie das folgendermaßen tun:

git push origin HEAD:refs/heads/foo

Es drückt alles, was dein Kopf ist, um zu verzweigen foo das gab es nicht auf der Fernbedienung.


32
2017-11-25 15:29



Wenn Sie eine Verzweigung vom aktuellen Zweig erstellen möchten

git checkout -b {your_local_branch_name} 

Sie möchten einen Zweig von einem entfernten Zweig, können Sie versuchen

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

Wenn Sie mit Änderungen fertig sind, können Sie die Datei hinzufügen.

git add -A or git add <each_file_names>

Führen Sie dann einen lokalen Commit durch

git commit -m 'your commit message'

Wenn Sie zum Remote-Repo wechseln möchten

git push -u origin <your_local_branch_name>

Alles zusammen wird sein

git checkout -b bug_fixes 

oder Wenn Sie einen Zweig von einem entfernten Zweig erstellen möchten, sagen Sie Entwicklung 

Git Kasse -b Fehlerbehebung Ursprung/Entwicklung

Sie können zur Verzweigung nach remote Repo durch drücken

git push -u origin **bug_fixes**

Wann immer Sie Ihre Zweigstelle von einem anderen Zweig aus aktualisieren möchten Meister.

git pull origin master.


23
2018-05-01 06:12



Zuerst erstellen Sie den Zweig lokal:

git checkout -b your_branch

Und dann, um den Zweig remote zu erstellen:

git push --set-upstream origin your_branch

Hinweis: Dies funktioniert mit den neuesten Versionen von Git:

$ git --version
git version 2.3.0

Prost!


22
2018-04-21 23:43