Domanda Come posso inserire un nuovo ramo locale in un repository Git remoto e tracciarlo anch'io?


Voglio essere in grado di fare quanto segue:

  1. Creare un ramo locale basato su qualche altro ramo (remoto o locale) (via git branch o git checkout -b)

  2. Spingi la filiale locale al repository remoto (pubblicare), ma farlo percorribile così git pull e git push funzionerà immediatamente

Come lo faccio?

Lo so --set-upstream in Git 1.7, ma questa è un'azione post-creazione. Voglio trovare un modo per apportare una modifica simile quando si spinge il ramo nel repository remoto.


3648
2018-05-04 12:58


origine


risposte:


In Git 1.7.0 e versioni successive, puoi effettuare il checkout di un nuovo ramo:

git checkout -b <branch>

Modifica i file, aggiungi e commetti. Poi spingere con il -u (Corto per --set-upstream) opzione:

git push -u origin <branch>

Git imposterà le informazioni di tracciamento durante la spinta.


5748
2018-06-03 20:50



Se non stai condividendo il tuo repository con gli altri, questo è utile per spingere tutti i tuoi rami al telecomando, e --set-upstream tracciamento corretto per te:

git push --all -u

(Non esattamente quello che l'OP chiedeva, ma questo one-liner è molto popolare)

Se stai condividendo il tuo repository con gli altri questa non è una buona forma, perché intaserai il repository con tutti i tuoi rami sperimentali poco raccomandabili.


448
2018-01-20 11:36



Prima dell'introduzione di git push -u, non c'era git push opzione per ottenere ciò che desideri. Hai dovuto aggiungere nuove istruzioni di configurazione.

Se crei un nuovo ramo usando:

$ git checkout -b branchB
$ git push origin branchB:branchB

Puoi usare il git config comando per evitare di modificare direttamente il .git/config file.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

O puoi modificare manualmente il .git/config file per avere informazioni di tracciamento su questo ramo.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

132
2018-05-04 13:03



In poche parole, per creare un nuovo Locale ramo, fare:

git branch <branch-name>

Per spingerlo al a distanza repository, do:

git push -u origin <branch-name>

111
2018-04-24 12:09



Una leggera variazione delle soluzioni già fornite qui:

  1. Creare un ramo locale basato su un altro ramo (remoto o locale):

    git checkout -b branchname
    
  2. Spingi il ramo locale nel repository remoto (pubblica), ma rendilo così tracciabile git pull e git push funzionerà immediatamente

    git push -u origin HEAD
    

    utilizzando HEAD è un "modo pratico per spingere il ramo corrente sullo stesso nome sul telecomando". Fonte: https://git-scm.com/docs/git-push In termini Git, HEAD (in maiuscolo) è un riferimento alla parte superiore del ramo corrente (albero).

    Il -u l'opzione è solo per breve --set-setupstream. Questo aggiungerà un riferimento di tracciamento a monte per il ramo corrente. puoi verificarlo cercando nel tuo file .git / config:

    Enter image description here


55
2017-07-05 08:13



Suppongo che tu abbia già clonato un progetto come:

git clone http://github.com/myproject.git
  1. Quindi nella tua copia locale, crea un nuovo ramo e controllalo:

    git checkout -b <newbranch>
    
  2. Supponendo di aver creato un "git bare - init" sul tuo server e creato myapp.git, dovresti:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. Successivamente, gli utenti dovrebbero essere in grado di

    git clone http://example.com/var/git/myapp.git
    

NOTA: Presumo che tu abbia il tuo server attivo e funzionante. Se non lo è, non funzionerà. Un buon how-to è Qui.

AGGIUNTO

Aggiungi un ramo remoto:

git push origin master:new_feature_name

Verifica se tutto è in ordine (recupera l'origine e elenca i rami remoti):

git fetch origin
git branch -r

Crea un ramo locale e traccia il ramo remoto:

git checkout -tb new_feature_name origin/new_feature_name

Aggiorna tutto:

git pull

27
2018-05-04 13:04



Semplicemente

git push -u origin localBranch:remoteBranchToBeCreated

su un progetto già clonato.

Git crea un nuovo ramo chiamato remoteBranchToBeCreated sotto i miei impegni ho fatto dentro localBranch.


24
2018-03-20 11:13



modificare Obsoleto, basta usare git push -u origin $BRANCHNAME


Uso git publish-branch a partire dal I vari strumenti Git di William (repo generoso e clone).

OK, niente Ruby, quindi - ignorando le precauzioni! - prendi le ultime tre righe dello script e crea uno script bash, 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}

Quindi corri git-publish-branch REMOTENAME BRANCHNAME, dove REMOTENAME è di solito di origine (puoi modificare lo script in modo da prendere l'origine come predefinito, ecc ...)


19
2018-05-04 13:03



Per creare un nuovo ramo separandoci dal ramo esistente

git checkout -b <new_branch>

e quindi spingere questo nuovo ramo nel repository usando

git push -u origin <new_branch>

Questo crea e invia tutti i commit locali a un ramo remoto appena creato origin/<new_branch>


15
2018-06-03 20:36



Ho creato un alias in modo che ogni volta che creo un nuovo ramo, spinga e segua il ramo remoto di conseguenza. Ho inserito il seguente blocco nel .bash_profile file:

# 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

uso: basta digitare gcb thuy/do-sth-kool con thuy/do-sth-kool è il mio nuovo nome di ramo.


7
2018-01-05 10:11



Per la versione di GitLab precedente alla 1.7, utilizzare:

git checkout -b name_branch

(name_branch, ex: master)

Per inviarlo al repository remoto, fai:

git push -u origin name_new_branch

(nome_new_branch, esempio: caratteristica)


5
2017-12-06 18:42