Comment mettre à jour my fork pour avoir les mêmes branches et tags que le dépôt original sur github?

quand vous bifurquez un dépôt sur github votre dépôt contient toutes les branches et étiquettes.

au fil du temps, ces branches et étiquettes deviennent périmées.

Comment est-ce qu'une aussi facile il est à la fourchette s'assurer que votre fourchette a toutes les branches et les étiquettes sans avoir à se refermer ?

c'est à dire un git magicpull --rebase amont/* myremote/*

qui récupérerait toutes les branches et tags en amont et s'assurerait que le les mêmes sont présents dans myremote.

35
demandé sur Max Rydahl Andersen 2013-04-03 09:45:40
la source

3 ответов

cela suppose que votre télécommande " upstream "est appelée" origin "et que vous avez votre fork personnalisé sous votre nom d'utilisateur (i.e." maxandersen")

lorsque vous faites exécuter votre clone avec la doublure suivante (rafraîchissement de suivre toutes les branches distantes de git comme les branches locales :

remote=origin ; for brname in `git branch -r | grep origin | grep -v master | grep -v HEAD | sed -e 's/.*\///g'`; do git branch --track $brname  $remote/$brname ; done

cela va configurer le suivi des branches pour toutes les branches trouvées dans la télécommande nommée 'origin'. Si vous avez déjà un checkout avec ce nom de branche il rien ne changera, sauf s'assurer que le suivi est en place.

(facultatif) maintenant, assurez-vous que toutes vos branches sont à jour (utile si vous avez déjà des branches cochées):

git pull --rebase --all

maintenant avec toutes les branches configurées pour suivre et mettre à jour les branches push et sur votre télécommande (remplacer "maxandersen" par votre nom de télécommande):

git push --all maxandersen
git push --tags maxandersen

après cela votre fourche est synchronisée.

le script suivant fait tout cela, y compris demander la confirmation:

## Checkout all branches from remote as tracking branches. Based on    /q/track-all-remote-git-branches-as-local-branches-45789/"Usage:"
   echo ""151930920" <upstream-remote> <target-remote>"
   echo ""
   echo "Example which ensures remote named 'maxandersen' have all the same branches and tags as 'origin'"
   echo ""151930920" origin maxandersen"
   exit 1
}

if [ -z "$UPSTREAM" ]
then
 echo Missing upstream remote name.
 usage
fi

if [ -z "$MYREPO" ]
then
 echo Missing target remote name. 
 usage
fi

read -p "1. This will setup '$MYREPO' to track all branches in '$UPSTREAM' - Are you sure ?" -n 1 -r

if [[ $REPLY =~ ^[Yy]$ ]]
then
 for brname in `git branch -r | grep "$UPSTREAM" | grep -v master | grep -v HEAD | sed -e 's/.*\///g'`; do git branch --track $brname  $UPSTREAM/$brname ; done
fi

read -p "2. This will push all local branches and tags into '$MYREPO' - Are you sure ?" -n 1 -r

if [[ $REPLY =~ ^[Yy]$ ]]
then
 git push --all $MYREPO
 git push --tags $MYREPO
fi

Enregistrer "updateallbranchestags.sh" et l'exécuter avec:

sh updateallbranches.sh origin maxandersen

et toutes les branches / étiquettes de 'origin' seront disponibles dans remote named 'maxandersen'

32
répondu Max Rydahl Andersen 2017-05-23 15:26:32
la source

vous auriez encore besoin d'un clone local, qui serait:

upstream and fork

  • git push --all origin (origine étant votre fourche): cela suppose que:
    • vous avez toutes les branches locales qui suivent toutes les branches en amont (voir étape précédente).

      Sinon, vous pousseriez seulement une branche locale par défaut, puisqu'un clone ne créerait qu'une seule branche locale (la branche par défaut)
    • vous n'avez pas poussé commits de votre propre sur ces branches.
18
répondu VonC 2017-05-23 15:10:33
la source

vous pouvez appuyer directement sur la télécommande. Évidemment cela ne tient pas compte des changements dans la fourche, mais il répond toujours à la question. Et si les changements sont limités, vous pouvez facilement les fusionner/les reformater en utilisant vos branches locales.

git push -f origin refs/remotes/upstream/*:refs/heads/*
0
répondu Tamir Daniely 2017-12-25 15:00:56
la source

Autres questions sur