Ho creato un ramo 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. **Per prima cosa voglio creare un ramo locale, e lo spingerò a monte solo quando sono soddisfatto e voglio condividere il mio ramo.
aggiornamento con Git 2.0 c'è una risposta più semplice che ho scritto qui sotto: https://stackoverflow.com/a/27185855/109305
Per prima cosa, create il vostro ramo localmente:
git checkout -b <branch-name> # Create a new branch and check it out
Il ramo remoto viene creato automaticamente quando lo spingi sul server remoto. Così, quando ti senti pronto, puoi semplicemente fare:
git push <remote-name> <branch-name>
Dove <remote-name>
è tipicamente origin
, il nome che git dà al remoto da cui hai clonato. I tuoi colleghi possono quindi semplicemente tirare quel ramo, e viene creato automaticamente in locale.
Nota comunque che formalmente, il formato è:
git push <remote-name> <local-branch-name>:<remote-branch-name>
Ma quando ne omettete uno, si assume che entrambi i nomi dei rami siano gli stessi. Detto questo, come parola di cautela, non fate 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
sappia cosa fare, si potrebbe invece voler usare
git push --set-upstream <remote-name> <local-branch-name>
Come descritto sotto, l'opzione --set-upstream
imposta un ramo upstream:
Per ogni ramo che è aggiornato o spinto con successo, aggiunge l'upstream
(tracking) di riferimento, usato da git-pull(1) senza argomenti e altri comandi.
Per prima cosa, devi creare il tuo ramo localmente
git checkout -b your_branch
Dopo di che, puoi lavorare localmente nel tuo ramo, quando sei pronto a condividere il ramo, spingilo. Il prossimo comando spinge il ramo all'origine del repository remoto e lo 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 spingere quando vuoi senza passare argomenti a git push (git push senza argomenti spingerà il master al master remoto, il tuo_branco locale al tuo_branco remoto, ecc...)
git push
I compagni di squadra possono fare il push al tuo ramo facendo dei commit e poi fare il push esplicitamente
... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch
O tracciando il ramo per evitare gli argomenti di git push
git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
Come indicato nelle risposte precedenti,
git push <remote-name> <local-branch-name>:<remote-branch-name>
è sufficiente per spingere un ramo locale.
I tuoi colleghi possono tirare tutti i rami remoti (compresi quelli nuovi) con questo comando:
git remote update
Poi, per apportare modifiche al ramo, il solito flusso:
git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>