Ich habe bereits einen lokalen Hauptzweig, der den entfernten Hauptzweig eines Github-Projekts verfolgt. Jetzt hat ein Mitarbeiter von mir im selben Projekt eine neue Niederlassung erstellt, und ich möchte Folgendes entsprechend tun:
- Erstellen Sie lokal einen neuen Zweig
- Machen Sie diesen neuen Zweig zum neu erstellten Remote-Zweig.
Wie soll ich es richtig machen?
git
github
git-branch
MLister
quelle
quelle
git checkout -t <remote>/<whatever>
. Wenn es nur einen Remote-Tracking-Zweig gibt, der endet<whatever>
, können Sie sogar einfachgit checkout <whatever>
raten, was Sie meinen.Antworten:
Der erste Befehl stellt sicher, dass Sie eine Remote-Verzweigung im lokalen Repository haben. Der zweite Befehl erstellt einen lokalen Zweig, der den entfernten Zweig verfolgt. Es wird davon ausgegangen, dass Ihr Remote-Name
origin
und der Filialname lautetbranch-name
.--track
Die Option ist standardmäßig für Remote-Zweige aktiviert und kann weggelassen werden.quelle
git checkout <branchname>
und git überprüft ihn automatisch und richtet einen Tracking-Zweig ein. Ich wollte nur wiederholen, was @Mark Longair oben in diesem Kommentar gesagt hat : stackoverflow.com/questions/11262703/… .remotes/origin/develop
? Sollte es nicht einfach seinorigin/develop
? Sind das die gleichen?git fetch --all
, sonst würden keine neuen Zweige geholtcmd
, erkennt Eclipse den neuen Zweig?Wenn Sie keine lokale Niederlassung haben, ist dies wirklich so einfach wie:
Wenn Sie beispielsweise abrufen und ein neuer Remote-Tracking-Zweig namens aufgerufen wird
origin/feature/Main_Page
, gehen Sie wie folgt vor :Dadurch wird ein lokaler Zweig mit demselben Namen wie der Remote-Zweig erstellt, der diesen Remote-Zweig verfolgt. Wenn Sie mehrere Fernbedienungen mit demselben Zweigstellennamen haben, können Sie die weniger mehrdeutigen verwenden:
Wenn Sie den lokalen Zweig bereits erstellt haben und ihn nicht löschen möchten, lesen Sie Wie kann ein vorhandener Git-Zweig einen Remote-Zweig verfolgen? .
quelle
git checkout 1.5-branch
(remotes/upstream/1.5-branch
ist in der Ausgabe vongit branch -a
) führt dazu, dass dieserror: pathspec '1.5-branch' did not match any file(s) known to git.
geändert wird, was zu einemgit checkout upstream/1.5-branch
getrennten HEAD führt und kein lokaler Zweig erstellt wird. Ich denke, dieser Teil der Antwort ist einfach falsch. Dies ist mit Git 2.4.3<remote>/<branch>
. Ein Fernverfolgungszweig ist schreibgeschützt und gibt an, wo sich dieser Zweig beim letzten Abruf auf der Fernbedienung befand. Wenn Siecheckout
diesen Zweig anrufen , werden Sie in den getrennten HEAD-Modus versetzt, genau wie Piotr sagt. Beachten Sie, dass durch die Angabe des abzurufenden Remote-Zweigs das Erstellen unerwünschter Remote-Tracking-Zweige vermieden wird.git checkout feature-branch
. Ich schlage NICHT vor, den Befehl zu verwenden,git checkout origin/feature-branch
der, wie Sie beide betont haben, zu einem nicht hilfreichen, abgenommenen Kopf führt.Zunächst müssen Sie das Remote-Repository abrufen:
Dann können Sie den neuen Zweig erstellen und so einrichten, dass er den gewünschten Remote-Zweig verfolgt:
Sie können auch "git branch --track" anstelle von "git checkout -b" verwenden, wie maximal angegeben.
quelle
checkout -b
einen Remote-Zweig als Ausgangspunkt verwenden, ist die Verwendung tatsächlich nicht erforderlich--track
.git checkout <branchname>
und es einen Remote-Zweig mit demselben Namen gibt (nachdem Sie a ausgeführt habengit fetch
).Wenn der Zweig kein Remote-Zweig ist, können Sie Ihren lokalen Zweig direkt an den Remote-Zweig senden.
oder wenn Sie einen Entwicklungszweig haben
oder wenn der Remote-Zweig vorhanden ist
Es gibt einige andere Möglichkeiten, einen entfernten Zweig zu pushen.
quelle