Domanda Come si crea un ramo Git remoto?


Ho creato una filiale locale che voglio "spingere" a monte. C'è una domanda simile qui su Stack Overflow su come tracciare un ramo remoto appena creato.

Tuttavia, il mio flusso di lavoro è leggermente diverso. Primo Voglio creare un ramo locale, e lo spingerò a monte solo quando sono soddisfatto e voglio condividere il mio ramo.

  • Come potrei farlo? (le mie ricerche su google non sembravano venire fuori nulla).
  • Come direi ai miei colleghi di estrarlo dal repository upstream?

AGGIORNAMENTO Con Git 2.0 c'è una risposta più semplice Ho scritto qui sotto: https://stackoverflow.com/a/27185855/109305


2704
2017-10-05 09:21


origine


risposte:


Innanzitutto, crei il tuo ramo localmente:

git checkout -b <branch-name> # Create a new branch and check it out

Il ramo remoto viene creato automaticamente quando lo si invia al server remoto. Quindi, quando ti senti pronto, puoi semplicemente fare:

git push <remote-name> <branch-name> 

Dove <remote-name> è in genere origin, il nome che git dà al telecomando da cui sei stato clonato. I tuoi colleghi avrebbero quindi estratto quel ramo e automaticamente creato localmente.

Si noti tuttavia che formalmente, il formato è:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Ma quando ne ometti uno, presuppone che entrambi i nomi dei rami siano uguali. Detto questo, come una parola di attenzione, non fare l'errore critico di specificare solo :<remote-branch-name> (con i due punti), o il ramo remoto sarà cancellato!

In modo che un successivo git pull saprà cosa fare, potresti invece voler usare:

git push --set-upstream <remote-name> <local-branch-name> 

Come descritto di seguito, il --set-upstream opzione imposta un ramo upstream:

Per ogni ramo che è aggiornato o   spinto con successo, aggiungi upstream   (tracciamento) riferimento, usato da   senza argomento git-pull (1) e altro   comandi.


3288
2017-10-05 09:29



Innanzitutto, devi creare il tuo ramo localmente

git checkout -b your_branch

Successivamente, puoi lavorare localmente nel tuo ramo, quando sei pronto a condividere il ramo, spingilo. Il comando successivo spinge il ramo all'origine del repository remoto e lo tiene traccia

git push -u origin your_branch

I compagni di squadra possono raggiungere il tuo ramo, facendo:

git fetch
git checkout origin/your_branch

Puoi continuare a lavorare nel ramo e premere quando vuoi senza passare argomenti a git push (il push git senza argomenti spinge il master al master remoto, your_branch local a remote your_branch, ecc ...)

git push

I compagni di squadra possono spingere al tuo ramo facendo commit e poi spingere esplicitamente

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

O rintracciare il ramo per evitare gli argomenti per git push

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

796
2017-07-26 01:09



Semplice soluzione Git 2.0+:

Come di Git 2.0 il comportamento è diventato più semplice:

Puoi configurare git con push.default = current per semplificare la vita:

Ho aggiunto questo così ora posso solo spingere un nuovo ramo a monte con

$ git push -u

-u seguirà il ramo remoto con lo stesso nome. No con questa configurazione indovinerete automaticamente il riferimento remoto a git push. A partire dal documentazione di git.config:

push.default 

Definisce l'azione che git push dovrebbe intraprendere se non viene fornito esplicitamente un refspec.

push.default = current - spingere il ramo corrente per aggiornare un ramo con il   lo stesso nome sul lato ricevente. Funziona sia in flussi di lavoro centrali che non centrali.

Per me, questa è una buona semplificazione del mio flusso di lavoro giornaliero Git. L'impostazione di configurazione si occupa del caso di utilizzo "normale" in cui si aggiunge un ramo localmente e si desidera crearlo da remoto. Inoltre, posso facilmente creare rami locali da telecomandi semplicemente facendo git co remote_branch_name (al contrario di usare --set-upstream-to bandiera).

Conosco questa domanda e le risposte accettate sono piuttosto vecchie, ma il comportamento è cambiato in modo che ora esistano opzioni di configurazione per semplificare il flusso di lavoro.

Per aggiungere alla tua configurazione Git globale, eseguilo sulla riga di comando:

$ git config --global push.default current

240
2017-11-28 09:46



Come affermato nelle risposte precedenti,

git push <remote-name> <local-branch-name>:<remote-branch-name>

è sufficiente per spingere un ramo locale.

I tuoi colleghi, possono estrarre tutti i rami remoti (inclusi quelli nuovi) con questo comando:

git remote update

Quindi, per apportare modifiche sul ramo, il flusso usuale:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

65
2017-12-27 14:12



Crea un nuovo ramo localmente in base al ramo corrente:

git checkout -b newbranch

Applica le modifiche come faresti normalmente. Quindi, spingerlo a monte:

git push -u origin HEAD

Questa è una scorciatoia per inserire il ramo corrente in un ramo con lo stesso nome origin e tracciarlo in modo da non dover specificare origin HEAD nel futuro.


48
2018-02-24 14:58



Se vuoi creare un ramo remoto senza avere quello locale, puoi farlo in questo modo:

git push origin HEAD:refs/heads/foo

Spinge qualsiasi cosa il tuo TESTO a ramificarsi foo che non esisteva sul telecomando.


32
2017-11-25 15:29



Se si desidera creare un ramo dal ramo corrente

git checkout -b {your_local_branch_name} 

vuoi un ramo da un ramo remoto, puoi provare

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

Se hai finito con le modifiche puoi aggiungere il file.

git add -A or git add <each_file_names>

Quindi fai un commit localmente

git commit -m 'your commit message'

Quando si desidera passare al repository remoto

git push -u origin <your_local_branch_name>

Tutti insieme saranno

git checkout -b bug_fixes 

o Se vuoi creare un ramo da un ramo remoto, dì sviluppo 

git checkout -b bug_fixes origine/sviluppo

È possibile passare al repository remoto tramite

git push -u origin **bug_fixes**

Ogni volta che vuoi aggiornare il tuo ramo da qualsiasi altro ramo, dì maestro.

git pull origin master.


23
2018-05-01 06:12



Innanzitutto crei il ramo localmente:

git checkout -b your_branch

E poi per creare il ramo da remoto:

git push --set-upstream origin your_branch

Nota: questo funziona sulle versioni più recenti di git:

$ git --version
git version 2.3.0

Saluti!


22
2018-04-21 23:43



Crea il ramo sul tuo computer locale e attiva questo ramo:

$ git checkout -b [name_of_your_new_branch]

Spingi il ramo su github:

$ git push origin [name_of_your_new_branch]

Quando vuoi commettere qualcosa nel tuo ramo, assicurati di essere nel tuo ramo.

Puoi vedere tutti i rami creati usando:

$ git branch

Che mostrerà:

* approval_messages
  master
  master_clean

Aggiungi un nuovo telecomando per il tuo ramo:

$ git remote add [name_of_your_remote] 

Spingi le modifiche dal tuo commit nel tuo ramo:

$ git push origin [name_of_your_remote]

Aggiorna il tuo ramo quando il ramo originale dal repository ufficiale è stato aggiornato:

$ git fetch [name_of_your_remote]

Quindi devi applicare per unire le modifiche, se il tuo ramo è derivato dallo sviluppo devi fare:

$ git merge [name_of_your_remote]/develop

Elimina un ramo sul tuo filesystem locale:

$ git branch -d [name_of_your_new_branch]

Per forzare la cancellazione del ramo locale sul tuo filesystem:

$ git branch -D [name_of_your_new_branch]

Elimina il ramo su github:

$ git push origin :[name_of_your_new_branch]

Qui tutte le informazioni

Altro progetto esistente


16
2018-05-27 11:39



La soluzione più semplice ... Drumm Roll. git versione 2.10.1 (Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes , and go a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

N.B. - Il ramo che hai appena creato nel tuo ambiente locale e il ramo remoto non esistente in cui stai provando a spingere, deve avere lo stesso nome.


13
2018-03-18 06:23