Ich möchte Folgendes tun können:
Eine lokale Verzweigung auf der Grundlage einer anderen (entfernten oder lokalen) Verzweigung erstellen (über git branch
oder git checkout -b
)
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
Ich nehme an, dass Sie bereits ein Projekt wie geklont haben:
git clone http://github.com/myproject.git
Dann erstellen Sie in Ihrer lokalen Kopie einen neuen Zweig und checken ihn aus:
git checkout -b <neuerZweig>
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
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.
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
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...)