66 votes

Quelle est la différence entre "origin" et "remote" dans les commandes git ?

En jargon git, sont origin y remote la même chose ? Ou est-ce que origin fait référence au répertoire local ?

Dans le cas de git push -u origin master : Laquelle des interprétations suivantes est correcte ?

  1. "pousser tout en amont vers le repo distant appelé 'origin' et sa branche 'master'"
  2. "pousser tout depuis le dépôt local d'origine appelé 'origin' vers la branche amont 'master'".

J'apprécierais toute clarification !

Les réponses à ma question ont clarifié deux points pour moi :

  1. origin fait référence au dépôt distant, plutôt qu'à la copie locale clonée du dépôt distant. Ceci n'est pas clair quand on lit que origin est un alias de remote et est créé au moment de git clone
  2. origin fait référence au dépôt distant dans git push -u origin master parce que les copies locales du repo sont implicites et "rarement référencées".

62voto

Deltics Points 9213

En langage git origin est simplement le nom par défaut d'un répertoire distant à partir duquel un repo a été cloné à l'origine. Il aurait également pu être appelé source o remote1 ou simplement remote .

Rappelez-vous que git est un système distribué de pair à pair, qui n'a pas de notion intégrée de relations client/serveur, maître/esclave, parent/enfant (bien que celles-ci puissent lui être imposées par un utilisateur dans un scénario particulier).

Toutes les télécommandes sont égales. origin est simplement (et littéralement) le premier parmi ces égaux (pour un repo cloné) :)

Et comme le souligne Jan dans les commentaires, le nom associé à chaque télécommande est destiné à vous faciliter la tâche. Si vous trouvez que origin ne vous convient pas vraiment, vous pouvez la modifier.

Quant à vos interprétations de la push la première est la plus proche de la réalité mais la commande push telle qu'elle est écrite va pousser le fichier local master à la branche master la branche sur le site distant identifié par le nom (configuré localement) origin .

S'il n'y a pas de master dans la branche distante, une branche sera créée.

Les détails complets de la commande push, des drapeaux, des options, etc. sont bien sûr dans la documentation. .

Vous faites rarement (voire jamais) référence au repo "local" de manière explicite puisque vos opérations sont effectuées dans le contexte d'un repo.

14voto

Non, ils ne veulent pas dire la même chose.

remote en git -En langage courant, il s'agit de tout dépôt à distance, tel que votre GitHub ou un autre dépôt de l'UE. git serveur.

origin est, par convention, le nom distant par défaut dans git . Lorsque vous faites un git clone <url> , <url> est automatiquement ajouté à votre dépôt local sous le nom de origin . Vous pouvez, bien sûr, ajouter d'autres télécommandes sous des noms différents en utilisant git remote add .

Quand vous le faites git push -u origin master Ce que cela signifie, c'est "pousser tout ce qui se trouve dans mon master local vers le master distant nommé". origin ". La structure de cette commande est, bien sûr, plus générale - la forme la plus générale est git push -u <remote> <branch> qui va pousser la branche nommée branch à la télécommande désignée, en la créant à l'autre extrémité si la télécommande ne l'a pas déjà (c'est ce que fait l'option -u drapeau le fait).

En complément, git push par défaut, va pousser la branche courante vers origin correspondant à git push origin <current-branch> .

12voto

Jeff Puckett Points 13157

Vous pouvez avoir plusieurs télécommandes, chacune avec un nom différent - comme le nom par défaut "origine".

Votre question suppose que vous avez actuellement la branche master extraite.

git push -u origin master

Pousse la branche locale nommée master vers la branche distante "origin" comme la branche nommée master. L'option -u indique à git local de suivre cette branche distante en amont de votre branche locale.

5voto

torek Points 25463

A à distance est juste un mot : un nom à utiliser pour identifier un autre dépôt Git quelque part.

La chaîne origin est le nom par défaut de la télécommande (singulier) que git clone est mis en place automatiquement, lorsque vous clonez à partir d'un autre dépôt Git ("origin"-al). Vous pouvez choisir un autre nom, et/ou ajouter d'autres dépôts distants. Chaque remote a, au moins, une URL, qui est l'endroit où l'autre dépôt doit être trouvé.

Pour git push le troisième mot - ajustez ce nombre si nécessaire, si vous ajoutez divers drapeaux ; dans ce cas, vous avez ajouté -u donc maintenant c'est le quatrième mot - c'est normalement le nom d'une certaine distance.

Les mots restants sont tous réfspecs que l'on peut résumer (même si ce n'est pas exact à 100 %... en fait, moins de 50 %, selon la façon dont on compte :-)) ) comme suit une paire de noms de branches séparés par deux points .

Si vous écrivez un seul nom de branche comme master Git interprète cela comme signifiant "utiliser (une partie) de l'amont s'il y en a un, sinon utiliser le même nom après les deux points". Habituellement, l'amont, s'il est défini, a le même nom de base, donc master finit généralement par signifier master:master . Git les envoie - Git à l'URL du distant - les commits trouvés sur votre (le nom sur la gauche), et leur demande ensuite de mettre en place leur (le nom sur la droite) au même commit que vous venez de pousser pour cette branche.

Si vous ne mettez pas de refspecs, la valeur par défaut de Git dépend de votre version de Git. Depuis la version 2.0 de Git, la valeur par défaut est de pousser le fichier branche actuelle vers une branche du même nom sur le site distant.

El -u Le drapeau indique git push que, si la poussée réussit, elle devrait set l'amont pour la branche que vous venez de pousser.

El en amont d'une branche se présente en deux parties : le nom d'un distant, et le nom d'une branche sur ce distant. Puisque vous avez donné git push les deux éléments - le nom de la télécommande était origin et la branche était la deuxième (après le point-virgule) master de l'implicite master:master de master -Cette opération, si elle réussit, permettra de définir l'amont de l'opération. master à origin/master .

( Modifier : vous pourriez, légitimement, vous demander où se trouve la / provenait de la en amont réglage de origin/master . C'est en partie un artefact historique. Malheureusement, il est à l'origine d'une grande confusion. Pour l'instant, gardez simplement à l'esprit que à distance , branche y Branche de suivi à distance sont toutes des choses différentes dans Git. Elles sont toutes liées de diverses manières, mais il est important de se rappeler qu'elles ne sont pas identiques, et que les termes ont des significations très spécifiques. Le mot piste est également surchargé. Le nouveau terme en amont est meilleur, mais toutes les descriptions ne l'utilisent pas).

2voto

twodave Points 413

Non, remote est une structure mère de origin . C'est juste le nom par défaut de la remote Git crée lorsque vous clonez un dépôt.

Plus d'informations dans cette question : Que signifie "origine" dans Git ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X