git syncing
SVN utilise un dépôt centralisé unique comme hub de communication pour les développeurs. La collaboration passe par des ensembles de changements entre les copies de travail des développeurs et le dépôt centralisé. C'est différent du modèle de collaboration distribué de Git. En effet, ce dernier fournit à chaque développeur sa propre copie du dépôt, avec son propre historique local et sa structure de branche. Les utilisateurs partagent généralement une série de commits et non un ensemble de changements unique. Au lieu de commiter un ensemble de changements à partir d'une copie de travail vers le dépôt centralisé, Git vous permet de partager des branches entières entre les dépôts.
git remote
La commande git remote
vous permet de créer, d'afficher et de supprimer des connexions avec d'autres dépôts. Les connexions distantes ressemblent plus à des signets qu'à des liens directs vers d'autres dépôts. Au lieu de fournir un accès en temps réel à un autre dépôt, elles servent de noms peu complexes qui peuvent être utilisés pour référencer une URL peu pratique.
Par exemple, le diagramme suivant représente deux connexions distantes à partir de votre dépôt dans le dépôt centralisé et le dépôt d'un autre développeur. Au lieu de les référencer par leurs URL complètes, vous pouvez transmettre le dépôt d'origine et les raccourcis de Jean à d'autres commandes Git.
Aperçu de l'utilisation de git remote
Pour résumer, la commande git remote
est une interface permettant de gérer une liste d'entrées distantes stockées dans le fichier ./.git/config
du dépôt. Les commandes suivantes sont utilisées pour afficher l'état actuel de la liste distante.
Afficher des configurations git remote
git remote
Répertorie vos connexions distantes avec d'autres dépôts.
git remote -v
Comme la commande ci-dessus, mais inclut l'URL de chaque connexion.
Création et modification de configurations git remote
La commande git remote
constitue également une méthode ou une aide pratique pour modifier le fichier ./.git/config
d'un dépôt. Les commandes présentées ci-dessous vous permettent de gérer des connexions avec d'autres dépôts. Elles modifient le fichier /.git/config
du dépôt. Vous pouvez cependant obtenir le même résultat en modifiant directement le fichier ./.git/config
à l'aide d'un éditeur de texte.
git remote add <name> <url>
Create a new connection to a remote repository. After adding a remote, you’ll be able to use <name>
as a convenient shortcut for <url>
in other Git commands.
git remote rm <name>
Remove the connection to the remote repository called <name>
.
git remote rename <old-name> <new-name>
Rename a remote connection from <old-name>
to <new-name>
.
Discussion sur git remote
Git est conçu pour offrir à chaque développeur un environnement de développement totalement isolé. Par conséquent, les informations ne sont pas automatiquement échangées entre les dépôts. Au lieu de cela, les développeurs doivent faire un pull manuel des commits vers leur dépôt local et pusher manuellement leurs commits locaux vers le dépôt centralisé. La commande git remote
est juste un moyen plus simple de transmettre les URL à ces commandes de « partage ».
Remote d'origine
Lorsque vous clonez un dépôt grâce à git clone
, une connexion distante nommée « origin » et pointant vers le dépôt cloné est automatiquement créée. C'est particulièrement utile pour les développeurs qui créent une copie locale d'un dépôt centralisé, puisque cela permet de faire un pull des changements en amont ou de publier les commits locaux. Ce comportement explique aussi pourquoi les projets Git nomment le dépôt centralisé « origin ».
URL du dépôt
Git prend en charge différentes méthodes de référenciation du dépôt distant. Les protocoles HTTP et SSH comptent parmi les méthodes d'accès au dépôt distant les plus faciles. Le protocole HTTP permet d'autoriser facilement l'accès anonyme et en lecture seule à un dépôt. Par exemple :
http://host/path/to/repo.git
Toutefois, il n'est généralement pas possible de pusher des commits vers une adresse HTTP (vous ne voudriez de toute façon pas autoriser les pushs anonymes). En revanche, pour l'accès en lecture-écriture, vous devriez utiliser le protocole SSH :
ssh://user@host/path/to/repo.git
Vous aurez simplement besoin d'un compte SSH valide sur l'ordinateur hôte. Pour le reste, Git prend directement en charge l'accès authentifié par protocole SSH. Les solutions d'hébergement tierces modernes et sécurisées comme Bitbucket.com vous fournissent ces URL.
Commandes git remote
git remote
est l'une des nombreuses commandes Git acceptant l'ajout de « sous-commandes » supplémentaires. Vous trouverez ci-dessous une analyse des sous-commandes git remote
les plus fréquemment utilisées.
ADD <NAME> <URL>
Adds a record to ./.git/config
for remote named <name>
at the repository url <url>.
Accepte une option -f
qui va immédiatement lancer une commande git fetch
une fois l'enregistrement de dépôt distant créé.
Accepte une option --tags
qui va immédiatement lancer une commande git fetch
et importer chaque tag dans le dépôt distant.
RENAME <OLD> <NEW>
Updates ./.git/config
to rename the record <OLD>
to <NEW>
. All remote-tracking branches and configuration settings for the remote are updated.
REMOVE or RM <NAME>
Modifies ./.git/config
and removes the remote named <NAME>
. All remote-tracking branches and configuration settings for the remote are removed.
GET-URL <NAME>
Renvoie les URL d'un enregistrement distant.
Accepte l'option --push
; les URL de push sont interrogées au détriment des URL de fetch.
--all
permet de répertorier toutes les URL du dépôt distant.
SHOW <NAME>
Outputs high-level information about the remote <NAME>
.
PRUNE <NAME>
Deletes any local branches for <NAME>
that are not present on the remote repository.
Accepte une option --dry-run
qui va répertorier les branches configurées pour être nettoyées, mais qui ne le seront pas réellement.
Exemples de commandes git remote
Outre avec « origin », il est souvent utile d'établir une connexion avec les dépôts des membres de votre équipe. Par exemple, si votre collègue Jean gère un dépôt accessible publiquement à l'adresse dev.example.com/jean.git
, vous pouvez ajouter une connexion comme suit :
git remote add john http://dev.example.com/john.git
Ce type d'accès aux dépôts individuels des développeurs permet de collaborer en dehors du dépôt centralisé. Cela s'avère très utile pour les petites équipes qui travaillent sur de grands projets.
Afficher vos connexions distantes
Par défaut, la commande git remote
répertorie les connexions distantes avec d'autres dépôts précédemment stockées. Elle renvoie une sortie à une seule ligne qui indique les noms de « signet » des dépôts distants.
$ git remote
origin
upstream
other_users_repo
Si vous appelez git remote
avec l'option -v
, vous imprimerez la liste des noms de dépôt marqués d'un signet, ainsi que l'URL de dépôt correspondante. L'option -v
signifie « verbose » ou détaillé. Voici un exemple de sortie détaillée de git remote
.
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
Ajouter des dépôts distants
La commande git remote add
crée un enregistrement de connexion avec un dépôt distant. Après avoir ajouté un dépôt distant, vous pourrez utiliser ./.git/config
du dépôt. Exemple de mise à jour de ce fichier de configuration :
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
Inspecter un dépôt distant
La sous-commande show peut être ajoutée à git remote
pour obtenir une sortie détaillée sur la configuration d'un dépôt distant. Cette sortie contient une liste des branches associées au dépôt distant, ainsi que les points de terminaison liés pour les fetch et les push.
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: main
Remote branches:
main tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
main pushes to main (fast-forwardable)
Faire des fetch et des pull depuis des dépôts distants Git
Faire des push vers des dépôts distants Git
La commande git push
permet d'écrire dans un dépôt distant.
git push <remote-name> <branch-name>
This example will upload the local state of <branch-name>
to the remote repository specified by <remote-name>
.
Renommer et supprimer des dépôts distants
git remote rename <old-name> <new-name>
The command git remote
rename is self-explanatory. When executed, this command will rename a remote connection from <old-name>
to <new-name>
. Additionally, this will modify the contents of ./.git/config
to rename the record for the remote there as well.
git remote rm <name>
The command git remote rm
will remove the connection to the remote repository specified by the <name>
parameter. To demonstrate let us 'undo' the remote addition from our last example. If we execute git remote rm remote_test
, and then examine the contents of ./.git/config
we can see that the [remote "remote_test"]
record is no longer there.