Si vous souhaitez que le local conseils de branche pour se faire rejointoyer après git fetch
Il est donc nécessaire de prendre des mesures supplémentaires.
Plus concrètement, supposons que le dépôt github comporte des branches D
, B
, C
y master
(la raison de cet étrange ensemble de noms de branches sera expliquée dans un instant). Vous êtes sur l'hôte devhost
et que vous êtes dans un repo où origin
est le repo github. Vous faites git fetch
qui reprend tous les objets et met à jour origin/D
, origin/B
, origin/C
y origin/master
. Jusqu'à présent, tout va bien. Mais maintenant, vous dites que vous voulez que quelque chose se produise, le devhost
, à local branches D
, B
, C
et/ou master
?
J'ai ces questions évidentes (pour moi en tout cas) :
- Pourquoi voulez-vous les conseils de tous branches mises à jour ?
- Que se passe-t-il si une branche (par ex,
B
) a des commits que le repo distant (github) n'a pas ? Doivent-ils être fusionnés, rebasés, ou ... ?
- Que se passe-t-il si vous êtes sur une branche (par ex,
C
) et le répertoire de travail et/ou l'index sont modifiés mais ne sont pas validés ?
- Que se passe-t-il si de nouvelles branches ont été ajoutées au dépôt distant (
A
) et/ou des branches supprimées ( D
) ?
Si la réponse au point (1) est "parce que devhost
n'est pas réellement pour le développement, mais plutôt un miroir local qui garde simplement une copie disponible localement du repo github afin que tous nos développeurs actuels puissent le lire rapidement au lieu de lire lentement sur github", alors vous voulez un "miroir" plutôt qu'un repo "normal". Il ne devrait pas avoir de répertoire de travail, et peut-être qu'il ne devrait pas non plus accepter de push, auquel cas les questions restantes disparaissent.
S'il existe une autre réponse, les points 2 à 4 deviennent problématiques.
Quoi qu'il en soit, voici une façon d'aborder la mise à jour des refs locaux en fonction des refs distants (après avoir exécuté la commande git fetch -p
par exemple) :
for ref in $(git for-each-ref refs/remotes/origin/ --format '%(refname)'); do
local=${ref#refs/remotes/origin/}
... code here ...
done
Ce qui va dans le ... code here ...
dépend des réponses aux questions (2-4).