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 oder git checkout -b ).

  • Klicken Sie auf den lokalen Zweig zum Remote-Repository (Publizieren). Damit dies funktioniert git push funktionieren git pull und git 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.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Roni Yaniv fragte am Mai 04 '10 um 15:58 2010-05-04 15:58
@ 13 Antworten

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.

5823
03 июня '11 в 23:50 2011-06-03 23:50 Die Antwort ist gegeben Daniel Ruoso 3. Juni 11 um 23:50 2011-06-03 23:50

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 
border=0

(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.

449
20 янв. Die Antwort wird von ErichBSchulz am 20. Januar gegeben 2014-01-20 14:36 14 am 14:36 2014-01-20 14:36

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 
133
04 мая '10 в 16:03 2010-05-04 16:03 Die Antwort wird von Lohrun am 04. Mai '10 um 16:03 2010-05-04 16:03 gegeben

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> 
111
24 апр. Antwort von piyushmandovra am 24. April 2015-04-24 15:09 '15 am 15:09 2015-04-24 15:09

Eine kleine Variante der bereits vorgeschlagenen Lösungen:

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

     git checkout -b branchname 
  2. Klicken Sie auf den lokalen Zweig zum Remote-Repository (Publizieren), machen Sie ihn jedoch nachverfolgbar, sodass git pull und git push sofort funktionieren

     git 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:

    2019

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 
27
Die Antwort wird von VP gegeben. 2010-05-04 16:04 04. Mai '10 um 16:04 2010-05-04 16:04

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 .

24
20 марта '17 в 14:13 2017-03-20 14:13 Die Antwort wurde von Arda am 20. März 17 um 14:13 2017-03-20 14:13 gegeben

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
04 мая '10 в 16:03 2010-05-04 16:03 antwortete auf Tobias Kienzler am 04 Mai '10 um 16:03 2010-05-04 16:03

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>

16
03 июня '15 в 23:36 2015-06-03 23:36 Die Antwort wird von cptjack am 03. Juni 15 um 23:36 gegeben. 2015-06-03 23:36

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 .

7
05 янв. Die Antwort gibt Thuy Trinh 05 Jan 2016-01-05 13:11 '16 am 13:11 2016-01-05 13:11

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)

6
06 дек. Die Antwort lautet Fadid 06 Dez. 2016-12-06 21:42 '16 um 21:42 2016-12-06 21:42

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 
1
21 апр. Die Antwort wird Brad Parks am 21. April gegeben. 2017-04-21 16:30 '17 um 16:30 Uhr 2017-04-21 16:30 Uhr

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 
-8
26 июня '15 в 12:37 2015-06-26 12:37 Die Antwort wird von shankar kumar 26. Juni 15 um 12:37 2015-06-26 12:37 gegeben

Weitere Fragen zu den Tags oder Frage stellen