Git push branche à partir d'une distance à l'autre?
J'ai les télécommandes mis en place:
$ git remote
korg
rorg
Et les branches suivantes:
$ git branch -a
* (no branch)
remotes/korg/gingerbread
remotes/korg/gingerbread-release
remotes/korg/honeycomb
remotes/korg/honeycomb-mr1-release
remotes/korg/master
remotes/m/android-2.3.3_r1 -> refs/tags/android-2.3.3_r1a
remotes/m/gingerbread -> korg/gingerbread
Maintenant je tiens à pousser toutes les branches distantes de korg
à la rorg
à distance. Comment dois-je faire?
De préférence sans en faire une succursale locale pour chaque d'abord, si c'est évitable.
- Je devine la réponse à cette une est comparable à la réponse à celui-ci: stackoverflow.com/questions/6922700/....
Vous devez vous connecter pour publier un commentaire.
Un test rapide de faire quelques temporaire dépôts montre que vous pouvez construire un refspec peut le faire:
De sorte origine/BRANCHNAME:refs/heads/BRANCHNAME
Vérification dans mon
rorg
à distance:git push rorg origin/one:one
(sansrefs/heads/
) à la place?refs/heads/
préfixe que vous êtes le poussant à distance ramifiée qui n'ont pas besoin d'être checkouted dans unone
J'ai trouvé celui-ci:
Et il a poussé de toutes mes branches distantes de korg pour rorg (même sans les copies locales des branches). Voir le résultat ci-dessous:
Et puis vous pouvez faire la même pression pour
tags
réf:Everything up-to-date
sur git 2.10.0 avec rien ne se passe, tout en faisant la même chose sur chacun des secteurs de travaux.git version 2.12.1
git push rorg refs/remotes/korg/branch_name:refs/heads/branch_name
HEAD
. Mais qui peuvent être supprimés.git push rorg :HEAD
git push rorg refs/tags/*:refs/tags/*
. Qui est le même quegit push rorg --tags
, mais il est bon de comprendre ce que ces choses sont à faire 🙂Pour compléter patthoyt réponse, voici un petit script shell qui pousse toutes les branches d'une distance à l'autre:
Pour résumer, pour chaque branche à distance sur la télécommande (à l'exclusion de "pointeur" les branches de la TÊTE), pousser la ref de la destination distante. (Le
${a//$SRC_REMOTE\/}
peu les bandes de la source à distance de nom à partir du nom de la branche, c'est à dire,origin/master
devientmaster
.)git push -u $DST_REMOTE $(for a in $(git branch --list --remote "$SRC_REMOTE/*" | grep -v --regexp='->'); do echo "$a:refs/heads/${a//$SRC_REMOTE\/}"; done)
Cela fonctionne dans Zsh
Pour n'importe quel script que j'ai sugges vous exécutez, il serait sage de les ranger ou de commettre toutes vos modifications.
J'avais besoin de pousser plusieurs branches à partir d'une distance à l'autre. Ces réponses exigé que les branches locales existaient auparavant
Il suffit de changer origin1 à la source à distance, et origin2 à la destination distante.
Copier dans "remoteBranchCloner.sh" et d'appeler à l'aide "sh callBranchCloner.sh".
Il y a peut être un mieux façon, cela ne va pas plusieurs pousse.
Si vous utilisez mon code, vous voudrez probablement utiliser la mise en cache des informations d'identification, sinon, vous devez saisir vos informations d'identification plusieurs fois.
Pour windows:
Remarque: Ce script est pour linux. Si vous l'exécuter en "git bash" le script fonctionne, mais vous ne pouvez pas l'exécuter à partir de la native de la console sans avoir installé quelque chose de spécial.
Pour linux
Où [--global] signifie que vous pouvez ajouter --global
Si vous souhaitez mettre à distance le suivi de toutes les branches d'une nouvelle télécommande:
Stockées en tant que .sh fichier et a couru avec "sh filename.sh" va créer tous les amonts pour le suivi à distance de l'remotename'
En raison de l'extra
HEAD
de la branche en cours de création dans le précédent réponse, la façon la plus propre que j'ai trouvé à faire c'est de cloner un dépôt nu, et puis le pousser toutes les branches de la télécommande comme suit: