{{tag>git dev depot}}
====== Les dépôts distants ======
Git est un gestionnaire de révision **distribué**. Il intègre donc des mécanismes de synchronisation entre dépots. Un même projet peut être lié à plusieurs dépôts distants, ce sont d'autre version du même projet disponible sur le réseau/Internet. Collaborer avec d'autre personne consiste à gérer ces dépôts distants.
===== Lister les dépôts =====
Lorsqu'on clone un projet git via la commande **git clone**, git garde une référence vers celui-ci c'est la référence **origin**.
$ git clone ssh://user@host:port/path/to/git-project.git
Par convention on désigne par **origin** un dépôt vers lequel on publie ses propres changements. On utilise **upstream** pour désigner le dépôt de référence du projet.
On utilise la commande **git remote** pour afficher les références vers les dépôts distants, l'option **-v** permet d'afficher l'URL:
$ git remote -v
===== Ajouter un dépôt ====
$ git remote add ref url
===== Récupérer =====
Pour récupérer l'ensemble des modifications apparues sur le dépôt distant sans modifier l'espace de travail, on utilise la commande **git fetch**:
$ git fetch origin
Pour récupérer également les tags associés utiliser l'argument %%--tag%%
Toutes les nouvelles données et les branches du dépôt distant sont récupérées dans le dépot git local mais les modifications ne sont pas intégrées aux branches locales.
$ git fetch --tags
**git fetch** ne fait aucune fusion des branches origines sur les branches locales. C'est le développeur qui fait le choix de la façon dont il intègre les modifications distantes à sa copie locale(fusion, cherry-pick ou pas).
Pour fusionner automatiquement les modifications apportées sur les branches distantes, elles doivent être configurées comme suivies, on utilisera alors la commande **git pull**. **git pull** (tirer) permet de récupérer et d’intégrer automatiquement (si c'est possible) les modifications apportées à la branche distante sur la branche locale. Pour avoir le détail des branches suivies, et donc des actions de git pull utiliser la commande **git remote show**:
$ git remote show origin
Lorsqu'on clone un dépôt, la branche locale master est automatiquement configurée en suivi de la branche distante master si elle existe.
===== Pousser le travail local =====
Une fois les modifications apportées sur le dépôt local, après commits, on pousse sur le dépôt distant les nouvelles révisions pour les partager:
$ git push origin master
Avant de publier les changements avec push, faire toujours un pull afin de s' assurer que le dépôt local est à jour et garanti que l'ajout des révisions sur le dépôt distant ne génère pas de problème.
===== Renommer retirer =====
Pour renommer une référence sur un dépôt distant, utiliser **git remote rename**:
$ git remote rename origin distant
On peut également supprimer l'un des dépôts distant s'il n'est plus utilisé:
$ git remote rm test
===== Références =====
* Pro Git, seconde édition de Scott Chacon et Ben Straub