Comment déplacer une nouvelle branche locale vers un référentiel Git distant et le suivre?

Je veux pouvoir faire ce qui suit:

  • Créez une branche locale basée sur une autre branche (distante ou locale) (via la git branch git checkout -b ou git checkout -b )

  • Cliquez sur la branche locale du référentiel distant (publier), mais faites-le pour que git pull et git push fonctionnent immédiatement.

Comment faire ça?

Je connais environ --set-upstream dans Git 1.7, mais c'est action après création. Je souhaite trouver un moyen d'effectuer des modifications similaires lorsque je clique sur une branche d'un référentiel distant.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Roni Yaniv a demandé le 04 mai '10 à 15:58 2010-05-04 15:58
@ 13 réponses

Dans Git 1.7.0 et les versions ultérieures, vous pouvez vérifier la nouvelle branche:

 git checkout -b <branch> 

Modification de fichiers, ajout et correction. Puis cliquez avec l'option -u (abréviation de --set-upstream ) :

 git push -u origin <branch> 

Git configurera les informations de suivi lorsque vous cliquerez.

5823
03 июня '11 в 23:50 2011-06-03 23:50 la réponse est donnée Daniel Ruoso 03 juin '11 à 23:50 2011-06-03 23:50

Si vous ne partagez pas votre référentiel avec d'autres utilisateurs, cela est utile pour pousser toutes vos succursales vers une distante, et --set-upstream :

 git push --all -u 
border=0

(Ce n'est pas exactement ce que l'OP a demandé, mais cette interface à une ligne est très populaire)

Si vous partagez votre rapport avec d’autres, ce n’est pas un très bon formulaire, car vous allez remplir le dépôt avec toutes vos branches expérimentales originales.

449
20 янв. La réponse est donnée par ErichBSchulz le 20 janvier 2014-01-20 14:36 14 à 14:36 2014-01-20 14:36

Avant l'introduction de git push -u il n'y avait pas d'option git push pour obtenir ce que vous voulez. Vous devriez avoir ajouté de nouvelles instructions de configuration.

Si vous créez une nouvelle branche, utilisez:

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

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

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

Ou vous pouvez modifier manuellement le fichier .git/config pour avoir des informations sur le suivi de ce fil.

 [branch "branchB"] remote = origin merge = refs/heads/branchB 
133
04 мая '10 в 16:03 2010-05-04 16:03 La réponse est donnée par Lohrun le 04 mai '10 à 16:03 2010-05-04 16:03

En termes simples, pour créer une nouvelle succursale locale , procédez comme suit:

 git branch <branch-name> 

Pour le déplacer vers le référentiel distant , procédez comme suit:

 git push -u origin <branch-name> 
111
24 апр. réponse donnée par piyushmandovra le 24 avril 2015-04-24 15:09 '15 à 15:09 2015-04-24 15:09

Une petite variante des solutions déjà proposées:

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

     git checkout -b branchname 
  2. Cliquez sur la branche locale du référentiel distant (publier), mais rendez-la traçable, donc git pull et git push fonctionneront immédiatement

     git push -u origin HEAD 

    Utiliser HEAD est "un moyen pratique de traduire la branche actuelle du même nom sur la télécommande". Source: https://git-scm.com/docs/git-push En termes de Git HEAD (majuscule) est un lien vers le haut de la branche actuelle (arborescence).

    L'option -u n'est que l'abréviation de --set-setupstream . Cela ajoutera un lien de suivi en amont pour la branche actuelle. Vous pouvez vérifier cela en consultant le fichier .git / config:

    2019

Je suppose que vous avez déjà cloné le projet, par exemple:

 git clone http://github.com/myproject.git 
  • Créez ensuite une nouvelle branche dans votre copie locale et vérifiez-la:

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

     git remote add origin ssh://example.com/var/git/myapp.git git push origin master 
  • Après cela, les utilisateurs devraient pouvoir

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

NOTE . Je suppose que votre serveur est en cours d'exécution. Si ce n'est pas le cas, cela ne fonctionnera pas. Un bon guide pratique est ici .

Ajouté

Ajouter une branche distante:

 git push origin master:new_feature_name 

Vérifiez si tout va bien (sélectionnez le début et la liste des 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 

Tout mettre à jour:

 git pull 
27
La réponse est donnée par VP. 2010-05-04 16:04 04 mai '10 à 16:04 2010-05-04 16:04

Je fais juste

 git push -u origin localBranch:remoteBranchToBeCreated 

sur un projet déjà cloné.

Git crée une nouvelle branche appelée remoteBranchToBeCreated sous mon remoteBranchToBeCreated j'ai créé dans localBranch .

24
20 марта '17 в 14:13 2017-03-20 14:13 la réponse a été donnée par Arda le 20 mars 17 à 14:13 2017-03-20 14:13

modifier obsolète, utilisez simplement git push -u origin $BRANCHNAME


Utilisez git publish-branch partir des divers outils Git de William ( gitorious repo et clone ).

Eh bien, pas de Ruby, ignorant les précautions! - prenez les trois dernières lignes du script et créez un script bash, git-publish-branch :

19
04 мая '10 в 16:03 2010-05-04 16:03 a répondu à Tobias Kienzler le 04 mai '10 à 16:03 2010-05-04 16:03

Pour créer une nouvelle branche, en la séparant de la branche existante

git checkout -b <new_branch>

puis cliquez sur ce nouveau fil dans le référentiel à l'aide de

git push -u origin <new_branch>

Cela crée et pousse tous les commits locaux vers la origin/<new_branch> nouvellement créée origin/<new_branch>

16
03 июня '15 в 23:36 2015-06-03 23:36 la réponse est donnée par cptjack le 03 juin '15 à 23:36 2015-06-03 23:36

J'ai créé un alias. Ainsi, chaque fois que je crée une nouvelle branche, il supprime et suit correctement la branche distante. J'ai mis l'extrait suivant dans le fichier .bash_profile :

 # 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 

Utilisation : tapez simplement gcb thuy/do-sth-kool utilisant thuy/do-sth-kool - c’est mon nouveau nom de branche.

7
05 янв. la réponse est donnée par Thuy Trinh le 05 janvier 2016-01-05 13:11 '16 à 13:11 2016-01-05 13:11

Pour GitLab version 1.7, utilisez:

git checkout -b name_branch

(name_branch, ex: master)

Pour l'envoyer à un référentiel distant, procédez comme suit:

git push -u origin name_new_branch

(name_new_branch, exemple: function)

6
06 дек. La réponse est donnée Fadid 06 déc. 2016-12-06 21:42 '16 à 21:42 2016-12-06 21:42

En me fondant un peu sur les réponses ici, j’ai résumé ce processus en un simple script bash, qui, bien sûr, pourrait être utilisé comme un alias Git.

Un ajout important pour moi est que cela m'encourage à exécuter des tests unitaires avant de valider et à transmettre le nom actuel de la branche par défaut.

 $ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin 

git_push_new_branch.sh

 function show_help() { IT=$(CAT <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo "$IT" exit } if [ -z "$1" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ "$1" == "OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH 
1
21 апр. La réponse est donnée à Brad Parks le 21 avril. 2017-04-21 16:30 '17 à 16h30 le 2017-04-21 16h30

Pour charger la branche locale du référentiel public, vous devez disposer de cd pour ouvrir le référentiel partagé, puis utiliser le code suivant:

 git push -u origin branchname 
-8
26 июня '15 в 12:37 2015-06-26 12:37 La réponse est donnée par Shankar Kumar 26 juin 15 à 12:37 2015-06-26 12:37

Autres questions sur les balises ou Poser une question