J'ai créé un référentiel sur Github. J'ai deux environnements de développement et j'accède à Github avec Github pour Windows sur les deux.
Sur l’un des deux environnements de développement, jesupprimé une branche et cliqué sur "synchroniser" dans Github pour Windows. La branche a été supprimée de manière appropriée dans Github. Lorsque je synchronisais depuis mon autre environnement de développement, il y avait une option pour "publier" la branche à supprimer, mais aucune pour la supprimer.
Comment puis-je dire à git ou à Github pour Windows d'effectuer une synchronisation complète, y compris la suppression de branches obsolètes?
Réponses:
2 pour la réponse № 1Oui et non - en fonction de ce que vous vouliez vraiment dire par "suppression d'une branche locale".
Une réponse rapide
Non, il est impossible d’avoir un référentiel distant qui supprime un fichier normal. branchez dans votre référentiel local.
Oui, il est possible de demander à Git delete éloigné branches dans votre local référentiel pour les branches qui ont été supprimés sur un particulier nommé à distance (comme "origine").
Celui-ci est réalisé en exécutant
git remote prune origin
ou
git fetch --prune
Des explications
S'il vous plaît, comprenez d’abord que le modèle de Git avectravailler avec des référentiels distants est asymétrique: le fait qu'une branche de votre référentiel local porte un nom correspondant exactement à celui d'une branche d'un référentiel distant n'a pas de sens à Git.
La raison est double:
- Votre dépôt local est traité par Git comme complètement autonome. et ne dépendant d'aucun autre référentiel.
- Votre référentiel local est capable de communiquer avec un nombre illimité de référentiels distants, et…
- … Ces dépôts peuvent n'avoir absolument aucunrelation "conceptuelle" avec votre référentiel local: par exemple, il est possible de récupérer les données d’un référentiel hébergeant le code source Linux dans un référentiel contenant votre projet de jouet de week-end.
Donc, alors que Git a certains aides à nouer quelquebranches locales à des branches éloignées particulières, ces liens sont asymétriques. En particulier, Git traite votre histoire locale comme étant "sacrée", et les opérations destructives sur celui-ci nécessitent vos actions explicites.