3704 Stimmen

Wie erstellt man einen entfernten Git-Zweig?

Ich habe einen lokalen Zweig erstellt, den ich nach oben schieben möchte. Es gibt eine ähnliche Frage hier auf Stack Overflow, wie man einen neu erstellten entfernten Zweig verfolgen kann.

Mein Arbeitsablauf ist jedoch etwas anders. Erste Ich möchte einen lokalen Zweig erstellen und ihn erst dann weitergeben, wenn ich zufrieden bin und meinen Zweig freigeben möchte.

  • Wie würde ich das machen? (meine Google-Suche scheint nichts zu ergeben).
  • Wie kann ich meinen Kollegen sagen, dass sie es aus dem Upstream-Repository ziehen sollen?

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

16 Stimmen

Wurde Ihre zweite Frage jemals beantwortet? >>Und wie würde ich meinen Kollegen sagen, dass sie es aus dem Upstream-Repository ziehen sollen?

0 Stimmen

1 Stimmen

@milkplus get fetch --all holt die neuen Zweige auf der entfernten Seite ab (aber nur eine get fetch --prune löscht lokal die Verweise auf die gelöschten entfernten Zweige). Ich denke, entweder sollte dies automatisch eingerichtet werden, oder man muss sie mündlich darauf ansprechen.

4240voto

Ikke Punkte 95045

Zunächst erstellen Sie Ihren Zweig lokal:

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

Der entfernte Zweig wird automatisch erstellt, wenn Sie ihn auf den entfernten Server übertragen. Wenn Sie also bereit dafür sind, können Sie es tun:

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

Wo <remote-name> ist typischerweise origin der Name, den git dem entfernten System gibt, von dem Sie geklont haben. Ihre Kollegen ziehen dann einfach diesen Zweig und er wird automatisch lokal erstellt.

Beachten Sie jedoch, dass das Format formell ist:

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

Wenn Sie jedoch einen auslassen, wird angenommen, dass beide Zweignamen identisch sind. Dies vorausgeschickt, als Hinweis auf Vorsicht machen Sie nicht den entscheidenden Fehler, nur :<remote-branch-name> (mit dem Doppelpunkt), oder der entfernte Zweig wird gelöscht!

Damit eine spätere git pull wissen, was zu tun ist, können Sie stattdessen die Option

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

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

Für jeden Zweig, der auf dem neuesten Stand ist oder erfolgreich gepusht wurde, eine Upstream (Nachverfolgung) hinzu, verwendet von argumentlosen git-pull(1) und anderen Befehlen verwendet wird.

107 Stimmen

Beachten Sie, dass das Standardverhalten von Git darin besteht, die passend zu Schiedsrichter, also git push <remote> würde keinen Zweig verschieben, wenn er nicht auf <remote> .

245 Stimmen

Sie können Folgendes verwenden git push -u <remote-name> <branch-name> statt, so dass eine nachfolgende git pull wird wissen, was zu tun ist.

89 Stimmen

Anstatt den Servernamen explizit anzugeben, können Sie einfach origin , was soviel bedeutet wie "der Server, von dem ich den Rest dieses Repos habe": also git push origin <branch-name> .

1017voto

dseminara Punkte 11265

Zunächst müssen Sie Ihre Verzweigung lokal erstellen

git checkout -b your_branch

Danach können Sie lokal in Ihrem Zweig arbeiten, und wenn Sie bereit sind, den Zweig freizugeben, pushen Sie ihn. Der nächste Befehl pusht den Zweig zum Ursprung des entfernten Repositorys und verfolgt ihn

git push -u origin your_branch

Teammitglieder können Ihren Zweig erreichen, indem sie etwas tun:

git fetch
git checkout origin/your_branch

Sie können mit der Arbeit im Zweig fortfahren und ihn jederzeit pushen, ohne Argumente an git push zu übergeben (ohne Argumente pusht git push den Master-Zweig an den entfernten Master-Zweig, den lokalen Zweig an den entfernten your_branch usw.)

git push

Teammitglieder können in Ihren Zweig pushen, indem sie Commits durchführen und dann explizit pushen

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

Oder die Verfolgung des Zweigs, um die Argumente für git push zu vermeiden

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

2 Stimmen

Gibt es eine Möglichkeit, eine entfernte Verzweigung zu erstellen, ohne eine lokale Verzweigung mit demselben Namen zu erstellen?

0 Stimmen

@ArielGabizon Ich bin mir nicht 100%ig sicher, was Sie meinen, da Sie Ihre Arbeit normalerweise lokal beginnen (d.h. der lokale Zweig wird zuerst genannt) oder einen bestehenden entfernten Zweig ziehen. Aber Sie können einen neuen Namen angeben, wenn Sie ihn zunächst an die entfernte Stelle übertragen: git push -u origin [local-branch-name]:[remote-branch-name] . Sie können auch Ihren eigenen Zweignamen angeben, wenn Sie einen entfernten Zweig ziehen: git branch -t -b [local-branch-name] origin/[remote-branch-name] .

420voto

Jesper Rønn-Jensen Punkte 98301

Einfache Git 2.0+ Lösung:

Ab dem Git 2.0 ist das Verhalten einfacher geworden :

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

Ich fügte dies hinzu, so dass ich jetzt einfach einen neuen Zweig upstream pushen kann mit

$ git push -u

-u verfolgt den entfernten Zweig desselben Namens. Mit dieser Konfiguration werden Sie den entfernten Verweis auf git push automatisch ermitteln. Von git.config-Dokumentation :

push.default

Legt die Aktion fest, die git push ausführen soll, wenn nicht explizit eine refspec angegeben wird.

push.default = current - den aktuellen Zweig pushen, um einen Zweig mit der gleichen Namen auf der Empfängerseite zu aktualisieren. Funktioniert sowohl in zentralen als auch in nicht zentralen Workflows.

Für mich ist dies eine gute Vereinfachung meines täglichen Git-Workflows. Die Konfigurationseinstellung kümmert sich um den "üblichen" Anwendungsfall, bei dem man einen Zweig lokal hinzufügt und ihn aus der Ferne erstellen möchte. Außerdem kann ich genauso gut lokale Zweige aus entfernten Zweigen erstellen, indem ich einfach git co remote_branch_name (im Gegensatz zur Verwendung von --set-upstream-to Flagge).

Ich weiß, dass diese Frage und die akzeptierten Antworten ziemlich alt sind, aber das Verhalten hat sich geändert, so dass es jetzt Konfigurationsoptionen gibt, um Ihren Arbeitsablauf zu vereinfachen.

Um Ihre globale Git-Konfiguration zu ergänzen, führen Sie diesen Befehl in der Befehlszeile aus:

$ git config --global push.default current

6 Stimmen

Ich finde git push -u origin HEAD wie beantwortet aquí etwas ausführlicher (man schreibt, was man tut), ohne dass man zu viel tippen muss. Außerdem ist ein git push -u ohne zusätzliche Argumente hat bei mir nicht funktioniert, wenn der Zweig mit -t

0 Stimmen

git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u funktioniert nicht (ab git 2.19.1); push benötigt die Argumente remote und branch.

0 Stimmen

Könnten Sie näher erläutern, was Sie meinen mit git co remote_branch_name ?

95voto

Lucian Punkte 1036

Wie in den vorherigen Antworten erwähnt,

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

reicht aus, um einen lokalen Zweig zu schieben.

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

git remote update

Um dann Änderungen an der Verzweigung vorzunehmen, gilt der übliche Ablauf:

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

0 Stimmen

Das gefällt mir, denn so kann der entfernte Name anders lauten als der lokale

0 Stimmen

Toll, jetzt kann ich Baz sperren.

93voto

Zenexer Punkte 17404

Erstellen Sie lokal einen neuen Zweig auf der Grundlage des aktuellen Zweigs:

git checkout -b newbranch

Übertragen Sie alle Änderungen wie gewohnt. Pushen Sie sie dann stromaufwärts:

git push -u origin HEAD

Dies ist eine Abkürzung, um den aktuellen Zweig in einen Zweig mit demselben Namen auf origin und verfolgen es, so dass Sie nicht angeben müssen origin HEAD in der Zukunft.

6 Stimmen

Das hat in meinem Fall geholfen: git push -u origin HEAD . Ich denke, das ist der klarste Weg.

2 Stimmen

Ja, man kann sich nie genau daran erinnern, was man zuletzt als Verzweigung eingegeben hat, daher ist dies der richtige Weg.

5 Stimmen

@marksyzm Wenn du dich nicht mehr daran erinnern kannst, auf welchem Zweig du bist oder wie du ihn genannt hast, solltest du wahrscheinlich gar nicht schieben! Zumindest nicht ohne die Ausführung von git status Erstens.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X