it-swarm.com.de

Wie erstelle ich einen entfernten Git-Zweig?

Ich habe eine lokale Filiale erstellt, die ich Upstream "pushen" möchte. Bei Stack Overflow gibt es eine ähnliche Frage zum Verfolgen eines neu erstellten Remote-Zweigs.

Mein Arbeitsablauf ist jedoch etwas anders. Zuerst möchte ich eine lokale Filiale erstellen und diese erst dann in den Upstream verschieben, wenn ich zufrieden bin und meine Filiale freigeben möchte.

  • Wie würde ich das machen? (Meine Google-Suche hat anscheinend nichts ergeben.).
  • Wie würde 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

2970

Einfache Git 2.0+ Lösung:

Ab Git 2.0 ist das Verhalten einfacher geworden :

Sie können Git mit Push.default = current konfigurieren, um das Leben einfacher zu machen:

Ich habe dies hinzugefügt, damit ich jetzt einfach eine neue Filiale mit in den Upstream verschieben kann

_$ git Push -u
_

_-u_ verfolgt den gleichnamigen entfernten Zweig. Mit dieser Konfiguration erraten Sie automatisch die Fernreferenz zu git Push. From Dokumentation zu git.config :

Push.default

Definiert die Aktion, die git Push ausführen soll, wenn keine Referenzspezifikation angegeben ist.

Push.default = current - Drücken Sie auf den aktuellen Zweig, um einen Zweig mit demselben Namen auf der empfangenden Seite 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 berücksichtigt den "normalen" Anwendungsfall, in dem Sie eine Verzweigung lokal hinzufügen und diese remote erstellen möchten. Außerdem kann ich genauso einfach lokale Verzweigungen aus Fernbedienungen erstellen, indem ich einfach _git co remote_branch_name_ (im Gegensatz zur Verwendung des Flags _--set-upstream-to_) mache.

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

Führen Sie zum Hinzufügen zu Ihrer globalen Git-Konfiguration Folgendes in der Befehlszeile aus:

_$ git config --global Push.default current
_
300

Zunächst legen Sie Ihre Filiale lokal an:

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

Der Remote-Zweig wird automatisch erstellt, wenn Sie ihn auf den Remote-Server übertragen. Wenn Sie sich dazu bereit fühlen, können Sie Folgendes tun:

git Push <remote-name> <branch-name> 

Wobei <remote-name> normalerweise Origin ist, der Name, den git der Fernbedienung gibt, von der Sie geklont haben. Ihre Kollegen ziehen dann einfach diesen Zweig und er wird automatisch lokal erstellt.

Beachten Sie jedoch, dass das Format formal wie folgt lautet:

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

Wenn Sie jedoch einen auslassen, wird davon ausgegangen, dass beide Zweignamen identisch sind. Nachdem Sie dies gesagt haben, machen Sie als ein Wort der Vorsicht nicht den kritischen Fehler, nur :<remote-branch-name> (mit dem Doppelpunkt) oder den entfernter Zweig wird gelöscht!

Damit ein nachfolgender git pull weiß, was zu tun ist, möchten Sie möglicherweise stattdessen Folgendes verwenden:

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

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

Fügen Sie für jeden Zweig, der aktuell ist oder erfolgreich gepusht wurde, eine Upstream-Referenz (Tracking) hinzu, die von argumentlosen git-pull (1) - und anderen Befehlen verwendet wird.

3578
Ikke

Zunächst müssen Sie Ihre Zweigstelle lokal erstellen

git checkout -b your_branch

Danach können Sie lokal in Ihrer Zweigstelle arbeiten. Wenn Sie bereit sind, die Zweigstelle freizugeben, drücken Sie sie. Der nächste Befehl Schieben Sie den Zweig zum Remote-Repository Origin und verfolgen Sie ihn

git Push -u Origin your_branch

Teamkollegen können Ihre Niederlassung erreichen, indem sie folgende Aktionen ausführen:

git fetch
git checkout Origin/your_branch

Sie können in der Verzweigung weiterarbeiten und pushen, wann immer Sie möchten, ohne Argumente an git Push zu übergeben.

git Push

Teamkollegen können durch Festschreiben und anschließendem expliziten Pushen in Ihre Filiale pushen

... work ...
git commit
... work ...
git commit
git Push Origin HEAD:refs/heads/your_branch

Oder verfolgen Sie den Zweig, um die Argumente für Push zu vermeiden

git checkout --track -b your_branch Origin/your_branch
... work ...
git commit
... work ...
git commit
git Push
845
dseminara

Wie in den vorherigen Antworten angegeben,

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

reicht aus, um eine lokale Filiale zu pushen.

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

git remote update

Um Änderungen an der Verzweigung vorzunehmen, gehen Sie wie folgt vor:

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

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

git checkout -b newbranch

Übernehmen Sie alle Änderungen wie gewohnt. Dann schieben Sie es stromaufwärts:

git Push -u Origin HEAD

Dies ist eine Verknüpfung, um den aktuellen Zweig in einen Zweig mit demselben Namen in Origin zu verschieben und zu verfolgen, sodass Sie in Zukunft Origin HEAD nicht mehr angeben müssen.

60
Zenexer

Wenn Sie einen Zweig aus dem aktuellen Zweig erstellen möchten

git checkout -b {your_local_branch_name} 

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

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

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

git add -A or git add <each_file_names>

Dann führen Sie ein Commit lokal durch

git commit -m 'your commit message'

Wann möchten Sie Push-to-Remote-Repo

git Push -u Origin <your_local_branch_name>

Alles zusammen wird

git checkout -b bug_fixes 

oder Wenn Sie einen Zweig aus einem entfernten Zweig erstellen möchten, sagen Sie development

git checkout -b Bugfixes Origin/Entwicklung

Sie können per Push in die Filiale zur Remote-Repo wechseln

git Push -u Origin bug_fixes

Wenn Sie Ihren Zweig von einem anderen Zweig aktualisieren möchten, sagen Sie master.

git pull Origin master.

40
sreekumar

Wenn Sie tatsächlich nur einen entfernten Zweig erstellen möchten, ohne den lokalen zu haben, können Sie dies folgendermaßen tun:

git Push Origin HEAD:refs/heads/foo

Es drückt, was auch immer Ihr HEAD ist, auf einen Zweig foo, der auf der Fernbedienung nicht vorhanden war.

38
Tassadar

Einfachste Lösung ... Drumm Roll ... Git Version 2.10.1 (Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes, and do a git commit 

3) git Push Origin localBranchNameThatDoesNotExistInRemote --force

N.B. - Der Zweig, den Sie gerade in Ihrer lokalen Umgebung erstellt haben, und der ferne nicht vorhandene Zweig, in dem Sie versuchen zu pushen, muss denselben Namen haben.

31
sapy

Zuerst legen Sie die Filiale lokal an:

git checkout -b your_branch

Und dann, um die Verzweigung remote zu erstellen:

git Push --set-upstream Origin your_branch

Hinweis: Dies funktioniert auf den neuesten Versionen von Git:

$ git --version
git version 2.3.0

Prost!

23
ipegasus

Erstellen Sie den Zweig auf Ihrem lokalen Computer und wechseln Sie in diesen Zweig:

$ git checkout -b [name_of_your_new_branch]

Schieben Sie den Zweig auf Github:

$ git Push Origin [name_of_your_new_branch]

Wenn Sie etwas in Ihrer Filiale festschreiben möchten, müssen Sie sich in Ihrer Filiale befinden.

Sie können alle erstellten Zweige anzeigen, indem Sie Folgendes verwenden:

$ git branch

Welches wird zeigen:

* approval_messages
  master
  master_clean

Fügen Sie eine neue Fernbedienung für Ihre Filiale hinzu:

$ git remote add [name_of_your_remote] 

Änderungen aus Ihrem Commit in Ihre Filiale übertragen:

$ git Push Origin [name_of_your_remote]

Aktualisieren Sie Ihren Zweig, wenn der ursprüngliche Zweig aus dem offiziellen Repository aktualisiert wurde:

$ git fetch [name_of_your_remote]

Dann müssen Sie sich bewerben, um Änderungen zusammenzuführen. Wenn Ihre Branche von "Develop" abgeleitet ist, müssen Sie Folgendes tun:

$ git merge [name_of_your_remote]/develop

Löschen Sie einen Zweig in Ihrem lokalen Dateisystem:

$ git branch -d [name_of_your_new_branch]

So erzwingen Sie das Löschen des lokalen Zweigs in Ihrem Dateisystem:

$ git branch -D [name_of_your_new_branch]

Löschen Sie den Zweig auf Github:

$ git Push Origin :[name_of_your_new_branch]

Hier alle Informationen

Anderes bestehendes Projekt

16
Numan Turkeri

Erstellen eines lokalen Zweigs aus einem vorhandenen Zweig (kann Master/Develop/Any-Other-Branch sein).

git checkout -b Branchenname

Schieben Sie dies auf die Fernbedienung

git Push -u remote_name local_branch_name: remote_branch_name

Hier,

  1. -u: Legt den Upstream-Zweig fest
  2. remote_name: git setzt den Namen standardmäßig auf "Origin", wenn es das Repository erstellt. Dies kann jedoch in einen anderen beliebigen Namen geändert werden.
  3. local_branch_name: ist der Name des lokalen Zweigs, der übertragen werden soll.
  4. remote_branch_name: ist der Name des Remote-Zweigs, den wir remote erstellen möchten.

Wenn wir den lokalen und den fernen Zweignamen entfernen, hat er das Format

git Push -u Remote-Name Branch-Name

Dadurch wird die lokale Verzweigung an Remote weitergeleitet und mit demselben Namen wie die lokale Verzweigung branch_name. Die lokale Niederlassung verfolgt auch die entfernte Niederlassung.

11
iosCurator

Ich weiß, dass diese Frage gut beantwortet ist, wollte aber nur die Schritte auflisten, die ich unternehme, um einen neuen Zweig "myNewBranch" und "Push to remote" (in meinem Fall "Origin") zu erstellen und das Tracking einzurichten. Betrachten Sie dies als die "TL; DR" -Version :)

# create new branch and checkout that branch
git checkout -b myNewBranch
# now Push branch to remote 
git Push Origin myNewBranch
# set up the new branch to track remote branch from Origin
git branch --set-upstream-to=Origin/myNewBranch myNewBranch
9
sufinawaz

Mit git können Sie jetzt einfach eingeben, wenn Sie sich im richtigen Zweig befinden

git Push --set-upstream Origin <remote-branch-name>

und git erstelle für dich den Origin-Zweig.

8

Vorgehensweise über den Source Tree

 1: Open SourceTree, click on Repository -> Checkout
 2 :Click on Create New Branch
 3: Select branch where from you want to get code for new branch 
 4: Give your branch name
 5: Push the branch  (by click on Push button)
6
Monis Majeed

Ich wollte das nur hinzufügen, während:

git checkout -b {branchName}

Erstellt einen neuen Zweig und überprüft diesen Zweig/macht ihn zu Ihrem aktuellen Zweig. Wenn Sie aus irgendeinem Grund nur einen Zweig abbrechen möchten, ihn jedoch nicht zu Ihrem aktuellen Zweig machen möchten, verwenden Sie den folgenden Befehl:

git branch {branchName}

Im ersten Befehl macht "checkout" diesen Zweig zu Ihrem aktuellen Zweig, und das "-b" bedeutet: Dieser Zweig existiert noch nicht, also machen Sie ihn für mich.

6
Brian Sachetta

git Push -u <remote-name> <branch-name> funktioniert nicht, wenn der neu erstellte Zweig nicht aus demselben Repo stammt, d. H. Wenn Sie den neuen Zweig nicht mit git checkout -b new_branch erstellt haben, funktioniert dies nicht.

Zum Beispiel hatte ich zwei verschiedene Repositories lokal geklont und musste repo2/branch1 nach repo1/kopieren und dann auch pushen.

Dieser Link hat mir geholfen, meinen lokalen Zweig (von einem anderen Repo geklont) auf mein Remote-Repo zu verschieben:

5
brokenfoot

Hier ist, wie Sie es in Eclipse durch Egit machen.

1) Öffnen Sie die Ansicht "Git Repository Exploring" und durchsuchen Sie das Git-Projekt, zu dem Sie einen Zweig erstellen möchten. Wählen Sie unter Brances -> Local .. den Zweig aus, für den Sie den Zweig erstellen möchten (In meinem Fall habe ich Master ausgewählt. Sie können einen anderen Zweig auswählen, wenn Sie dies wünschen.). und wählen Sie die Option "Dieses Projekt auschecken" und klicken Sie dann auf die Schaltfläche "Fertig stellen".

2) Wählen Sie nun im Projektexplorer das Projekt aus. Klicken Sie mit der rechten Maustaste auf Team -> Push Branch.

Ein neuer entfernter Zweig wird erstellt. Sie können Ihren Kollegen den Namen der Filiale geben, damit sie ihn abrufen können.

3
user2225713

Ich benutze das und es ist ziemlich praktisch:

git config --global alias.mkdir '!git checkout -b $1; git status; git Push -u Origin $1; exit;'

Verwendung: git mkdir NEW_BRANCH

Sie brauchen nicht einmal den Git-Status. Vielleicht möchte ich nur sicherstellen, dass alles gut läuft ...

Sie können den Zweig LOCAL und REMOTE mit einem einzigen Befehl haben.

0
Tarik