5040 votes

Pousser une nouvelle branche locale à distance à un repo Git et le suivre de trop

J'ai essayé de chercher une réponse à cette question, mais ne pouvais pas trouver tout ce qui répondre à ce besoin spécifique. Ce qui est étrange.

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

  1. créer une branche locale basée sur quelques autres (distant ou local) direction générale (via git branch ou git checkout -b)

  2. pousser la branche locale à distance repo (publier), mais il faciles à suivre donc, git pull et git push seront immédiatement le travail.

Comment dois-je faire?

EDIT: je sais à propos de --set-upstream dans Git 1.7, mais c'est un post-création à l'action. je veux trouver un moyen de faire un changement similaire lorsque l'on pousse la direction générale de la télécommande repo.

7623voto

Daniel Ruoso Points 13755

Au cours des dernières Git 1.7.0+ vous pouvez effectuer les opérations suivantes:

$ git checkout -b feature_branch_name
... edit files, add and commit ...
$ git push -u origin feature_branch_name

et il va mettre en place le suivi de l'information au cours de la poussée

538voto

ErichBSchulz Points 1058

Ce sera le pousser tous vos branches de la distance, et de définir en amont le suivi correctement pour vous:

git push --all -u

(Je ne sais pas exactement ce que l'OP a demandé, mais un simple one-liner en poussant une nouvelle branche à votre propre repo)

204voto

Lohrun Points 2494

Il n'y a pas de git push option pour obtenir ce que vous désirez. Vous devez ajouter la nouvelle configuration des déclarations.

Si vous créez une nouvelle branche à l'aide de:

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

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

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

Ou vous pouvez modifier manuellement l' .git/config le fichier à eu des informations de suivi à cette branche.

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

36voto

Tobias Kienzler Points 3769

Utiliser git publish-branch de William divers outils git

edit: ok, pas de ruby, en ignorant les garanties! - prendre les trois dernières lignes du script et de 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, exécutez git-publish-branch REMOTENAME BRANCHNAME, où REMOTENAME est généralement d'origine (vous pouvez modifier le script pour qu'il prenne origine en tant que par défaut, etc...)

35voto

VP. Points 2931

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

git clone http://github.com/myproject.git
  1. Puis dans votre copie locale, de créer une nouvelle branche et check it out:

    git checkout -b <newbranch>
    
  2. En supposant que vous avez fait un "git nu --init" dans votre serveur et a 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
    

NOTE: je suis en supposant que vous avez votre serveur en cours d'exécution. Si elle ne l'est pas, il l'habitude de travailler. une bonne manière de est ici

AJOUTÉ

Ajouter une branche distante:

git push origin master:new_feature_name

Vérifier si tout est bon (chercher l'origine et la liste des branches distantes):

git fetch origin
git branch -r

Créer une branche locale et de suivre la branche distante:

git checkout -tb new_feature_name origin/new_feature_name

Mise à jour de tout:

git pull

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X