Comment puis-je pousser un local Git branch à distance avec un nom différent facilement?
Je me demandais si il existe un moyen facile à pousser et à tirer une branche locale avec une branche à distance avec un nom différent, sans toujours en précisant que les deux noms.
Par exemple:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Maintenant, si quelqu'un met à jour remote_branch_name, je peux:
$ git pull
Et tout est fusionné /avance rapide. Cependant, si je fais des modifications dans mon local "newb", je ne peux pas:
$ git push
Au lieu de cela, j'ai:
% git push origin newb:remote_branch_name
Semble un peu ridicule. Si git-pull
utilise git-config branch.newb.merge
pour déterminer où tirer à partir d', pourquoi ne pas git-push
ont une option de configuration? Est-il un raccourci pratique pour cela ou dois-je juste continuer le chemin le plus long?
git push origin local-name:remote-name
cette cmd a fonctionné pour moi.
Vous devez vous connecter pour publier un commentaire.
Sûr. Il suffit de régler votre
push.default
àupstream
pour pousser les branches de leur rapport à l'amont (qui est le même quepull
tirera d', défini parbranch.newb.merge
), plutôt que de pousser des branches à celles correspondant au nom (qui est le paramètre par défaut pourpush.default
,matching
).Notez que cela utilisé pour être appelé
tracking
pasupstream
avant Git 1.7.4.2, donc si vous utilisez une ancienne version de Git, utiliseztracking
à la place. Lepush.default
option a été ajoutée dans Git 1.6.4, donc si vous êtes sur une version plus ancienne que cela, vous n'aurez pas cette option à tous et aura besoin de spécifier explicitement la direction générale pour le pousser à.git push buildserver .:test_this
où la.
du nom de la branche dont je n'ai pas forcément le savoir. Je pourrais le regarder, c'est sûr, mais si il y avait un peu de la main, comme le point, pour cela, il serait cool.HEAD
est ce que les points à l'extrait de branche, ou directement à un particulier d'engager si vous avez un décollement de la tête.Updates were rejected because a pushed branch tip is behind its remote
erreur pour moi. Mon local repo a été jusqu'à ce jour, mais les noms ont été juste différent.Lorsque vous ne l'initiale pousser ajouter le -u paramètre:
Ultérieure pousse va aller où vous voulez.
EDIT:
Que par le commentaire, que seuls les ensembles jusqu'tirer.
devrait le faire.
-u
juste définit en amont, qui, selon la question, est déjà défini. Il a besoin de définirpush.default
àupstrem
afin d'obtenirpush
à l'égard de l'amont, puisque, par défaut, seulspull
n'.La commande par Adam est maintenant obsolète. Vous pouvez utiliser:
à définir en amont de la branche de
my_local_branch
àorigin/my_remote_branch
.Voici le processus qui a fonctionné pour moi.
Maintenant votre nouveau repo sera "origine" et l'original de la pension de titres est "en amont". Confirmer à l'aide de git remote -v. (note de Côté: en Amont est utilisé pour récupérer à partir de l'original repo afin de garder votre copie locale en synchronisation avec le projet que vous souhaitez contribuer à l' - et l'origine est utilisé pour tirer et pousser, puisque vous pouvez contribuer à votre propre repo).
git push origin master
Maintenant votre nouvelle télécommande pensions de master (sur Github) sera en synchronisation avec le master original, mais il ne dispose d'aucune des branches.
Rebase est une puce de fusion. Puis le pousser à maîtriser à nouveau et vous verrez la fonction sélectionnée de la branche master sur le nouveau repo.
Facultatif: