Wie verschieben Sie einen neuen lokalen Zweig in ein Remote-Git-Repository und verfolgen ihn?
Ich möchte folgendes können:
Erstellen Sie einen lokalen Zweig basierend auf einem anderen (entfernten oder lokalen) Zweig (über
git branch
odergit checkout -b
).Klicken Sie auf den lokalen Zweig zum Remote-Repository (Publizieren). Damit dies funktioniert
git push
funktionierengit pull
undgit push
sofort.
Wie kann man das machen?
Ich kenne --set-upstream
in Git 1.7, aber dies ist eine Aktion nach der Erstellung. Ich möchte einen Weg finden, um ähnliche Änderungen vorzunehmen, wenn ich auf einen Zweig in einem Remote-Repository klicke.
In Git 1.7.0 und höher können Sie den neuen Zweig auschecken:
git checkout -b <branch>
Dateien bearbeiten, hinzufügen und korrigieren. Klicken Sie dann mit der Option -u
(kurz für --set-upstream
) :
git push -u origin <branch>
Git wird Tracking-Informationen einrichten, wenn Sie darauf klicken.
Wenn Sie Ihr Repo nicht für andere Benutzer --set-upstream
, ist dies hilfreich, um alle Zweigstellen zu einem Remote-Zweig zu verschieben, und --set-upstream
für Sie richtig:
git push --all -u

(Nicht genau das, was das OP angefordert hat, aber diese einzeilige Schnittstelle ist sehr beliebt.)
Wenn Sie Ihr Repo mit anderen teilen, ist dies keine sehr gute Form, da Sie das Repo mit all Ihren ausgefallenen experimentellen Zweigen füllen werden.
Vor der Einführung von git push -u
gab es keine git push
Option, um das zu bekommen, was Sie wollen. Sie sollten neue Konfigurationsanweisungen hinzugefügt haben.
Wenn Sie einen neuen Zweig erstellen, verwenden Sie:
$ git checkout -b branchB $ git push origin branchB:branchB
Sie können den Befehl git config
, um zu vermeiden, dass die .git/config
-Datei direkt bearbeitet wird.
$ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchB
Sie können die .git/config
-Datei auch manuell bearbeiten, um Informationen zum Verfolgen dieses Threads zu erhalten.
[branch "branchB"] remote = origin merge = refs/heads/branchB
Einfach gesagt, um einen neuen lokalen Zweig anzulegen, machen Sie:
git branch <branch-name>
Gehen Sie folgendermaßen vor, um es in das Remote- Repository zu verschieben:
git push -u origin <branch-name>
Eine kleine Variante der bereits vorgeschlagenen Lösungen:
Erstellen Sie einen lokalen Zweig basierend auf einem anderen (entfernten oder lokalen) Zweig:
git checkout -b branchname
Klicken Sie auf den lokalen Zweig zum Remote-Repository (Publizieren), machen Sie ihn jedoch nachverfolgbar, sodass
git pull
undgit push
sofort funktionierengit push -u origin HEAD
Die Verwendung von
HEAD
ist "eine bequeme Möglichkeit, den aktuellen Zweig auf der Fernbedienung in denselben Namen zu übersetzen". Quelle: https://git-scm.com/docs/git-push In Bezug auf Git HEAD (Großbuchstaben) ist ein Link zum oberen Teil des aktuellen Zweigs (Baums).Die Option
-u
ist nur für--set-setupstream
. Dadurch wird ein Upstream-Tracking-Link für den aktuellen Zweig hinzugefügt. Sie können dies überprüfen, indem Sie in der .git / config -Datei nachsehen:
Ich gehe davon aus, dass Sie das Projekt bereits geklont haben, zum Beispiel:
git clone http://github.com/myproject.git
Erstellen Sie dann eine neue Verzweigung in Ihrer lokalen Kopie und überprüfen Sie diese:
git checkout -b <newbranch>
Angenommen, Sie haben "git bare -init" auf Ihrem Server erstellt und myapp.git erstellt.
git remote add origin ssh://example.com/var/git/myapp.git git push origin master
Danach sollten Benutzer in der Lage sein
git clone http://example.com/var/git/myapp.git
HINWEIS. . Ich gehe davon aus, dass Ihr Server läuft. Wenn nicht, funktioniert es nicht. Ein guter praktischer Leitfaden ist hier .
HINZUFÜGEN
Einen entfernten Zweig hinzufügen:
git push origin master:new_feature_name
Prüfen Sie, ob alles in Ordnung ist (wählen Sie den Anfang und die Liste der entfernten Zweige):
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
Alle aktualisieren:
git pull
Ich mache einfach
git push -u origin localBranch:remoteBranchToBeCreated
über ein bereits geklontes Projekt.
Git erstellt einen neuen Zweig namens " remoteBranchToBeCreated
unter " remoteBranchToBeCreated
ich in localBranch
.
obsolet bearbeiten , verwenden Sie einfach git push -u origin $BRANCHNAME
Verwenden Sie git publish-branch
von Williams verschiedenen Git-Tools ( gitorious repo und clone ).
Nun, kein Ruby, also die Vorsichtsmaßnahmen ignorieren! - Nehmen Sie die letzten drei Zeilen des Skripts und erstellen Sie ein Bash-Skript, git-publish-branch
:
19
Um einen neuen Zweig zu erstellen, trennen Sie ihn vom vorhandenen Zweig
git checkout -b <new_branch>
Klicken Sie anschließend im Repository auf diesen neuen Thread
git push -u origin <new_branch>
Dadurch werden alle lokalen Commits erstellt und in den neu erstellten entfernten origin/<new_branch>
Ich habe einen Alias erstellt. Wenn ich also einen neuen Zweig erstelle, wird der entfernte Zweig entsprechend gelöscht und verfolgt. Ich habe das folgende Snippet in die .bash_profile
Datei .bash_profile
:
# 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 : gcb thuy/do-sth-kool
einfach gcb thuy/do-sth-kool
mit thuy/do-sth-kool
gcb thuy/do-sth-kool
Dies ist mein neuer thuy/do-sth-kool
.
Verwenden Sie für GitLab Version 1.7:
git checkout -b name_branch
(name_branch, ex: master)
Gehen Sie folgendermaßen vor, um es an ein Remote-Repository zu senden:
git push -u origin name_new_branch
(name_new_branch, Beispiel: Funktion)
Ausgehend von den Antworten hier habe ich diesen Prozess als einfaches Bash-Skript zusammengefasst, das natürlich als Git-Alias verwendet werden kann.
Eine wichtige Ergänzung für mich ist, dass es mich ermutigt, Komponententests auszuführen, bevor der Commit ausgeführt wird, und den aktuellen Namen des Standardzweigs weitergibt.
$ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin
git_push_new_branch.sh
function show_help() { IT=$(CAT <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo "$IT" exit } if [ -z "$1" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ "$1" == "OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH
Um den lokalen Zweig des öffentlichen Repositorys zu laden, benötigen Sie cd
, um das gemeinsam genutzte Repository zu öffnen, und verwenden Sie dann den folgenden Code:
git push -u origin branchname
Weitere Fragen zu den Tags git git-branch git-push- Repository oder Frage stellen