Je voudrais pousser et tirer toutes les branches par défaut, y compris celles nouvellement créées.
Y a-t-il un paramètre que je peux définir pour cela?
Sinon, lorsque j'ajoute une nouvelle branche, localement et que je veux la retirer du serveur, quelle est la manière la plus simple de le faire?
J'ai créé une nouvelle branche avec le même nom et j'ai essayé de tirer mais cela ne fonctionne pas. Me demande pour toute la config distante de la branche. Comment le définir.
git
version-control
branch
push
Lakshman Prasad
la source
la source
Réponses:
La façon la plus simple est de faire:
Cela poussera les balises et les branches.
la source
-u
une fois, par exemplegit push --all origin -u
, le suivi est configuré et après cela, vous pouvez simplement l'utilisergit push
.git push --tags origin
pour pousser toutes les balises.Avec git moderne, vous récupérez toujours toutes les branches (en tant que branches de suivi à distance dans l'
refs/remotes/origin/*
espace de noms, visibles avecgit branch -r
ougit remote show origin
).Par défaut (voir la documentation de la
push.default
variable config), vous poussez les branches correspondantes , ce qui signifie que vous devez d'abord fairegit push origin branch
pour que git le pousse toujoursgit push
.Si vous souhaitez toujours pousser toutes les branches , vous pouvez configurer push refspec. En supposant que la télécommande est nommée,
origin
vous pouvez soit utiliser git config :ou modifiez directement le
.git/config
fichier pour avoir quelque chose comme ceci:la source
git push --all origin
est bon pour publier une seule fois toutes les branches et les balises, bien que par défaut jusqu'à la version actuelle, la sémantique de correspondance signifierait que vous poussiez toutes les branches par la suite ... sauf si vous ajoutez une nouvelle branche ou une nouvelle balise. Le réglage de « pousser [...] toutes les branches par défaut » est comme écrit.fatal: Invalid refspec ''+refs/heads/*:refs/heads/*''
(Remarque: je suis sur git 2.0. Je suis toujours en train de résoudre ce problème.)push.default
estsimple
.Inclure le + dans la spécification de push est probablement une mauvaise idée, car cela signifie que git fera volontiers une poussée non rapide, même sans -f , et si le serveur distant est configuré pour les accepter, vous pouvez perdre l'historique.
Essayez juste ceci:
la source
--global
option à chacun d'eux pour en faire la valeur par défaut globale pour tous vos référentiels.git remote add
.J'avais utilisé les commandes ci-dessous pour migrer toutes les branches vers le nouveau référentiel.
REMARQUE : j'ai dû utiliser l'avant-dernière commande (c'est-à-dire pousser le maître en premier) lors du clonage d'un dépôt de Atlassian Stash vers AWS CodeCommit ( dépôt vide). Je ne suis pas sûr de la raison, mais après avoir poussé (
git push new-origin --mirror
), la branche par défaut faisait référence à une autre branche quemaster
.la source
git push new_origin --all
simplement pousser vos branches locales actuelles vers new_origin, pas toutes les branches d'origine.--bare
référentiel, qui est un peu différent d'un référentiel normal, il ne contient que les.git
fichiers, pas vos fichiers. C'est parfaitement suffisant si vous n'allez pas y travailler. Voir--bare
et--mirror
git-scm.com/docs/git-clone .Si vous déplacez des branches vers un nouveau référentiel à partir d'une ancienne et que vous n'avez PAS toutes les anciennes branches de référentiel locales, vous devrez d'abord les suivre.
Ajoutez ensuite votre nouveau référentiel distant:
Ensuite, vous pouvez pousser tout en utilisant cette commande:
Ou vous pouvez configurer le dépôt à l'aide des commandes git config notées dans les autres réponses ici si vous ne le faites pas une seule fois ou si vous cherchez uniquement à déplacer les branches locales.
Le point important, les autres réponses ne poussent que toutes les branches LOCALES. Si les branches n'existent que sur un autre dépôt REMOTE, elles ne se déplaceront pas sans les suivre au préalable. La boucle for présentée ici vous y aidera.
la source
git branch --track reponame origin/reponame
sinon vous obtiendrez toutes les branches distantes suivies sur la branche locale actuellegit branch -r | grep -v '\->' | sed 's/ origin\///'
, qui donne uniquement le nom de la branche distante.Pour voir toutes les branches sans utiliser,
git branch -a
vous devez exécuter:Vous pouvez maintenant voir toutes les branches:
Pour pousser toutes les branches, essayez:
la source
git fetch --all
?Si vous déplacez toutes les branches vers un nouveau référentiel à partir d'une ancienne, dans votre référentiel local, vous devez configurer le suivi de chaque branche vers les branches d'origine existantes, avant de passer au nouveau référentiel, sinon toutes vos branches d'origine n'apparaîtront pas dans la nouvelle origine. Pour ce faire, manuellement en suivant ou en vérifiant chaque branche, ou utilisez le seul revêtement:
Cette commande d'une ligne est basée sur des versions de celle-ci dans d'autres réponses sur cette page, mais est sans doute meilleure parce que:
Ensuite, si vous changez d'origines, remplacez le lien vers l'ancienne origine et pointez sur une nouvelle télécommande. Assurez-vous de créer d'abord la nouvelle télécommande, en utilisant l'interface graphique bitbucket / github, mais n'y ajoutez aucun fichier ou il y aura un problème de fusion. Par exemple
Maintenant, poussez. Notez que la deuxième commande est également nécessaire pour pousser les balises:
la source
Solution sans codage
origin
en dur dans la configurationUtilisez ce qui suit dans votre gitconfig global
Cela pousse toutes les branches et toutes les balises
Pourquoi ne PAS coder
origin
en dur dans la configuration?Si vous codez en dur:
origin
une télécommande dans tous les dépôts. Vous ne pourrez donc pas ajouter d'origine, mais vous devez utiliserset-url
.origin
existe déjà (à partir du point 1) rappelez-vous :)La récupération est déjà prise en charge par git moderne
Selon la réponse de Jakub Narębski:
la source