Frage Wie schiebe ich einen neuen lokalen Zweig zu einem Remote-Git-Repository und verfolge es auch?


Ich möchte Folgendes tun können:

  1. Erstellen Sie eine lokale Verzweigung basierend auf einer anderen (entfernten oder lokalen) Verzweigung (über git branch oder git checkout -b)

  2. Drücken Sie den lokalen Zweig in das Remote-Repository (veröffentlichen), aber mach es verfolgbar so git pull und git push wird sofort funktionieren.

Wie mache ich das?

ich weiss Bescheid --set-upstream in Git 1.7, aber das ist eine Post-Creation-Aktion. Ich möchte eine Möglichkeit finden, eine ähnliche Änderung vorzunehmen, wenn ich den Zweig zum Remote-Repository verschiebe.


3649
2018-05-04 12:58


Ursprung


Antworten:


In Git 1.7.0 und höher können Sie einen neuen Zweig auschecken:

git checkout -b <branch>

Dateien bearbeiten, hinzufügen und festschreiben. Dann drück mit dem -u (kurz für --set-upstream) Möglichkeit:

git push -u origin <branch>

Git wird während des Push-Vorgangs die Tracking-Informationen einrichten.


5749
2018-06-03 20:50



Wenn Sie Ihren Repo nicht mit anderen teilen, ist dies nützlich alle deine Zweige zur Fernbedienung, und --set-upstream für Sie richtig verfolgen:

git push --all -u

(Nicht genau, was der OP verlangte, aber dieser One-Liner ist ziemlich beliebt)

Wenn Sie Ihr Repo mit anderen teilen, ist das nicht wirklich eine gute Form, da Sie das Repo mit all Ihren zweifelhaften experimentellen Zweigen verstopfen werden.


448
2018-01-20 11:36



Vor der Einführung von git push -u, da war kein git push Option, um zu erhalten, was Sie wünschen. Sie mussten neue Konfigurationsanweisungen hinzufügen.

Wenn Sie einen neuen Zweig erstellen mit:

$ git checkout -b branchB
$ git push origin branchB:branchB

Du kannst den ... benutzen git config Befehl, um die Bearbeitung direkt zu vermeiden .git/config Datei.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

Oder Sie können die .git/config Datei mit Tracking-Informationen zu diesem Zweig.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

132
2018-05-04 13:03



Einfach gesagt, um ein neues zu erstellen lokal verzweigen, tun:

git branch <branch-name>

Um es an die Fernbedienung Repository, tun:

git push -u origin <branch-name>

111
2018-04-24 12:09



Eine kleine Variation der bereits hier gegebenen Lösungen:

  1. Erstellen Sie einen lokalen Zweig basierend auf einem anderen (entfernten oder lokalen) Zweig:

    git checkout -b branchname
    
  2. Schieben Sie den lokalen Zweig zum Remote-Repository (veröffentlichen), aber machen Sie es so nachverfolgbar git pull und git push wird sofort funktionieren

    git push -u origin HEAD
    

    Verwenden HEAD ist eine "praktische Möglichkeit, den aktuellen Zweig auf den gleichen Namen auf der Fernbedienung zu schieben". Quelle: https://git-scm.com/docs/git-push In Git-Begriffen ist HEAD (in Großbuchstaben) eine Referenz auf den Anfang des aktuellen Zweigs (Baum).

    Das -u Option ist nur kurz für --set-setupstream. Dadurch wird eine Upstream-Verfolgungsreferenz für den aktuellen Zweig hinzugefügt. Sie können dies überprüfen, indem Sie in Ihrer .git / config-Datei nachsehen:

    Enter image description here


55
2017-07-05 08:13



Ich nehme an, dass Sie bereits ein Projekt geklont haben wie:

git clone http://github.com/myproject.git
  1. Erstellen Sie dann in Ihrer lokalen Kopie eine neue Verzweigung und überprüfen Sie sie:

    git checkout -b <newbranch>
    
  2. Angenommen, Sie haben auf Ihrem Server "git bare --init" erstellt und myapp.git erstellt, sollten Sie:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. Danach sollten Benutzer in der Lage sein

    git clone http://example.com/var/git/myapp.git
    

HINWEIS: Ich nehme an, dass Sie Ihren Server in Betrieb haben. Wenn nicht, wird es nicht funktionieren. Eine gute Anleitung ist Hier.

HINZUGEFÜGT

Fügen Sie eine Remote-Zweigstelle hinzu:

git push origin master:new_feature_name

Überprüfen Sie, ob alles in Ordnung ist (Herkunft abrufen und entfernte Zweigstellen auflisten):

git fetch origin
git branch -r

Erstellen Sie eine lokale Niederlassung und verfolgen Sie die entfernte Niederlassung:

git checkout -tb new_feature_name origin/new_feature_name

Alles aktualisieren:

git pull

27
2018-05-04 13:04



Ich tue es einfach

git push -u origin localBranch:remoteBranchToBeCreated

über ein bereits geklontes Projekt.

Git erstellt einen neuen Zweig namens remoteBranchToBeCreated unter meinem commits tat ich in localBranch.


24
2018-03-20 11:13



bearbeiten Veraltet, nur benutzen git push -u origin $BRANCHNAME


Benutzen git publish-branch von William's verschiedene Git-Tools (gitorious Repo und Klon).

OK, kein Ruby, also - ignoriere die Sicherheitsvorkehrungen! - nimm die letzten drei Zeilen des Skripts und erstelle ein Bash-Skript, git-publish-branch:

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

Dann renne git-publish-branch REMOTENAME BRANCHNAME, wobei REMOTENAME normalerweise Ursprung ist (Sie können das Skript ändern, um den Ursprung als Standard zu wählen, etc ...)


19
2018-05-04 13:03



Um einen neuen Zweig zu erstellen, indem Sie von einem vorhandenen Zweig abzweigen

git checkout -b <new_branch>

und dann drücken Sie diese neue Verzweigung zu Repository mit

git push -u origin <new_branch>

Dadurch werden alle lokalen Commits für eine neu erstellte Remote-Verzweigung erstellt und übertragen origin/<new_branch>


15
2018-06-03 20:36



Ich habe einen Alias ​​erstellt, so dass ich bei jedem neuen Zweig den Remote-Zweig entsprechend verschieben und verfolgen kann. Ich habe folgenden Brocken in den .bash_profile Datei:

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

Verwendung: Schreib einfach gcb thuy/do-sth-kool mit thuy/do-sth-kool ist mein neuer Zweigname.


7
2018-01-05 10:11