J'ai poussé vers un référentiel Bitbucket distant et récemment un collègue a poussé une nouvelle branche qu'il a créée dans le même référentiel.
J'essaye de récupérer les modifications qu'il a téléchargées.
$ git branch -a
* master
localbranch1
localbranch2
remotes/origin/master
$ git branch -r origine / maître
Dans l'interface utilisateur Web de Bitbucket, je peux voir la branche qu'il a créée. Comment puis-je faire ceci?
Prochain essai:
$ git fetch bitbucket
Password for 'https://[email protected]':
From https://bitbucket.org/user/repo
* branch HEAD -> FETCH_HEAD
Si la branche qu'il a créée s'appelle new_branch_b, dois-je m'attendre à voir ce qui suit?
$ git branch -r
origin/master
origin/new_branch_b
Troisième essai:
$ git remote update
Fetching bitbucket
Password for 'https://[email protected]':
From https://bitbucket.org/user/repo
* branch HEAD -> FETCH_HEAD
$ git branch -r
origin/master
Quatrième essai:
[remote "bitbucket"]
url = https://[email protected]/user/repo.git
J'ai appelé la télécommande bitbucket
plutôt que l'origine (du moins c'est ce dont je me souviens; je l'ai configurée il y a un moment)
Cinquième essai:
J'ai mis à jour la configuration à distance de Bitbucket selon la réponse de kan :
$ git config -e
[remote "bitbucket"]
url = https://[email protected]/user/repo.git
fetch = +refs/heads/*:refs/remotes/bitbucket/*
Pour la plupart des gens, cela s'appellera origine:
[remote "origin"]
url = https://[email protected]/user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
Ensuite,
$ git remote update
Fetching bitbucket
Password for 'https://[email protected]':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
* [new branch] branch_name1 -> origin/branch_name1
* [new branch] branch_name2 -> origin/branch_name2
.... etc.
Je pense que git fetch origin
cela fonctionnerait aussi pour git remote update
.
refs/remotes/bitbucket/*
au lieu derefs/remotes/origin/*
.git fetch origin
fait le travailRéponses:
La
remote
section spécifie également les règles de récupération. Vous pouvez y ajouter quelque chose comme ça pour récupérer toutes les branches de la télécommande:(Ou remplacez-le
origin
parbitbucket
.)Veuillez lire à ce sujet ici: 10.5 Git Internals - The Refspec
la source
fetch = +refs/heads/master:refs/remotes/origin/master
pour moi. Le remplacementmaster
par a*
corrigé mon problème.git clone
un projet. Je ne me souviens pas avoir fait quelque chose de spécial avec mon git local.clone
été interrompu puis repris? Ou quelque chose d'autre a accédé au repo simultanément?Mettez à jour votre télécommande si vous ne l'avez toujours pas fait:
la source
git remote update
je puisse voir la nouvelle branche dans l'interface utilisateur. Mercigit branch -r
. Sur git-scm.com/docs/git-branch, il est dit "L'option -r fait que les branches de suivi à distance sont répertoriées, et l'option -a montre les branches locales et distantes".git remote update
récupère toutes les branches de toutes les télécommandes répertoriées dansgit remote -v
.git checkout origin/master
, puis j'ai bifurqué de cette tête détachée vers ma branche principalegit branch master; git checkout master
Si vous clonez avec le
--depth
paramètre, il.git/config
ne récupère pas toutes les branches, mais uniquement master.Vous pouvez simplement omettre le paramètre ou mettre à jour le fichier de configuration à partir de
à
la source
.git/config
, afin que les gens puissent le trouver.J'ai eu le même problème. Il semble que la solution la plus simple consiste simplement à supprimer la télécommande, à la lire et à la récupérer.
la source
git remote -v
vous montrera vos télécommandes afin que vous puissiez obtenir l'URL, lagit remote rm origin
supprimera,git remote add origin <url>
rajoutera.warning: ignoring broken ref refs/remotes/origin/HEAD
Malheureusement,
git branch -a
etgit branch -r
ne pas vous montrer toutes les branches à distance, si vous ne l' avez pas exécuté un « git fetch ».git remote show origin
fonctionne constamment tout le temps. Affiche égalementgit show-ref
toutes les références dans le référentiel Git. Cependant, cela fonctionne comme lagit branch
commande.la source