Wie schiebe ich einen neuen lokalen Zweig in ein entferntes Git-Repository und verfolge ihn auch?

Ich möchte Folgendes tun können:

  1. Eine lokale Verzweigung auf der Grundlage einer anderen (entfernten oder lokalen) Verzweigung erstellen (über git branch oder git checkout -b)

  2. Verschieben Sie den lokalen Zweig in das entfernte Repository (veröffentlichen), aber machen Sie ihn nachverfolgbar, damit git pull und git push sofort funktionieren.

Wie mache ich das?

Ich weiß von --set-upstream in Git 1.7, aber das ist eine Aktion nach der Erstellung. Ich möchte eine Möglichkeit finden, eine ähnliche Änderung vorzunehmen, wenn ich den Zweig in das entfernte Repository verschiebe.

Vor der Einführung von git push -u gab es keine git push Option, um das zu erreichen, was man wollte. Sie mussten neue Konfigurationsanweisungen hinzufügen.

Wenn Sie einen neuen Zweig erstellen, indem Sie:

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

Sie können den Befehl git config verwenden, um die direkte Bearbeitung der Datei .git/config zu vermeiden.

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

Oder Sie können die Datei .git/config manuell bearbeiten, um diesem Zweig Tracking-Informationen zuzuweisen.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB
Kommentare (1)

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

git clone http://github.com/myproject.git
  1. Dann erstellen Sie in Ihrer lokalen Kopie einen neuen Zweig und checken ihn aus:

     git checkout -b 
  2. Angenommen, Sie haben auf Ihrem Server ein "git bare --init" ausgeführt und die Datei myapp.git erstellt, dann sollten Sie:

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

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

Hinweis: Ich gehe davon aus, dass Ihr Server in Betrieb ist und läuft. Wenn das nicht der Fall ist, wird es nicht funktionieren. Eine gute Anleitung finden Sie hier.

Hinzufügen

Fügen Sie einen entfernten Zweig hinzu:

git push origin master:new_feature_name

Prüfen Sie, ob alles in Ordnung ist (Ursprung holen und entfernte Zweige auflisten):

git fetch origin
git branch -r

Erstellen Sie einen lokalen Zweig und verfolgen Sie den entfernten Zweig:

git checkout -tb new_feature_name origin/new_feature_name

Aktualisieren Sie alles:

git pull
Kommentare (7)

edit Veraltet, einfach git push -u origin $BRANCHNAME verwenden


Verwenden Sie git publish-branch aus Williams verschiedene Git-Werkzeuge (gitorious repo und clone).

OK, kein Ruby, also - ignorieren Sie die Sicherheitsvorkehrungen! - nehmen Sie die letzten drei Zeilen des Skripts und erstellen Sie 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}

Führen Sie dann git-publish-branch REMOTENAME BRANCHNAME aus, wobei REMOTENAME in der Regel origin ist (Sie können das Skript ändern, um origin als Standard zu nehmen, etc...)

Kommentare (4)