Question Comment puis-je pousser une nouvelle branche locale vers un dépôt Git distant et le suivre aussi?


Je veux être en mesure de faire ce qui suit:

  1. Créer une branche locale basée sur une autre branche (distante ou locale) (via git branch ou git checkout -b)

  2. Poussez la branche locale vers le référentiel distant (publier), mais le rendre traçable git pull et git push travaillera immédiatement.

Comment je fais ça?

Je sais à propos de --set-upstream dans Git 1.7, mais c'est une action post-création. Je veux trouver un moyen de faire un changement similaire en poussant la branche vers le dépôt distant.


3649
2018-05-04 12:58


origine


Réponses:


Dans Git 1.7.0 et versions ultérieures, vous pouvez extraire une nouvelle branche:

git checkout -b <branch>

Modifier les fichiers, ajouter et valider alors pousser avec le -u (court pour --set-upstream) option:

git push -u origin <branch>

Git va configurer les informations de suivi pendant la poussée.


5749
2018-06-03 20:50



Si vous ne partagez pas votre repo avec d'autres, il est utile de pousser tout vos branches à la télécommande, et --set-upstream suivi correctement pour vous:

git push --all -u

(Pas exactement ce que le PO demandait, mais ce one-liner est très populaire)

Si vous partagez votre repo avec d'autres, ce n'est pas vraiment une bonne forme car vous allez encombrer le repo avec toutes vos branches expérimentales douteuses.


448
2018-01-20 11:36



Avant l'introduction de git push -u, il n'y avait pas git push option pour obtenir ce que vous désirez. Vous deviez ajouter de nouvelles instructions de configuration.

Si vous créez une nouvelle branche en utilisant:

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

Vous pouvez utiliser le git config commande pour éviter d'éditer directement le .git/config fichier.

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

Ou vous pouvez éditer manuellement le .git/config fichier à avoir des informations de suivi à cette succursale.

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

132
2018-05-04 13:03



Tout simplement, pour créer un nouveau local branche, fais:

git branch <branch-name>

Pour le pousser à la éloigné référentiel, faire:

git push -u origin <branch-name>

111
2018-04-24 12:09



Une légère variation des solutions déjà données ici:

  1. Créez une branche locale basée sur une autre branche (distante ou locale):

    git checkout -b branchname
    
  2. Poussez la branche locale vers le référentiel distant (publier), mais rendez-le traçable git pull et git push travaillera immédiatement

    git push -u origin HEAD
    

    En utilisant HEAD est un "moyen pratique de pousser la branche actuelle au même nom sur la télécommande". La source: https://git-scm.com/docs/git-push En termes Git, HEAD (en majuscule) est une référence au sommet de la branche courante (arbre).

    le -u l'option est juste courte pour --set-setupstream. Cela ajoutera une référence de suivi en amont pour la branche actuelle. vous pouvez le vérifier en regardant dans votre fichier .git / config:

    Enter image description here


55
2017-07-05 08:13



Je suppose que vous avez déjà cloné un projet comme:

git clone http://github.com/myproject.git
  1. Ensuite, dans votre copie locale, créez une nouvelle branche et vérifiez-la:

    git checkout -b <newbranch>
    
  2. Supposons que vous ayez fait un "git bare --init" sur votre serveur et créé le myapp.git, vous devriez:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. Après cela, les utilisateurs devraient être en mesure de

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

REMARQUE: Je suppose que vous avez votre serveur opérationnel. Si ce n'est pas le cas, cela ne fonctionnera pas. Un bon how-to est ici.

AJOUTÉE

Ajouter une branche distante:

git push origin master:new_feature_name

Vérifiez si tout est bon (récupérez l'origine et listez les branches distantes):

git fetch origin
git branch -r

Créez une branche locale et suivez la branche distante:

git checkout -tb new_feature_name origin/new_feature_name

Mettez à jour tout:

git pull

27
2018-05-04 13:04



Je fais simplement

git push -u origin localBranch:remoteBranchToBeCreated

sur un projet déjà cloné.

Git crée une nouvelle branche nommée remoteBranchToBeCreated sous mes commits je l'ai fait dans localBranch.


24
2018-03-20 11:13



modifier Périmé, juste utiliser git push -u origin $BRANCHNAME


Utilisation git publish-branch de Les divers outils Git de William (repo gordious et cloner).

OK, pas de Ruby, donc - en ignorant les sauvegardes! - prendre les trois dernières lignes du script et créer un 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}

Ensuite, courez git-publish-branch REMOTENAME BRANCHNAME, où REMOTENAME est généralement d'origine (vous pouvez modifier le script pour prendre l'origine par défaut, etc ...)


19
2018-05-04 13:03