web-dev-qa-db-fra.com

Référentiel local et référentiel distant de Git - concepts confus

Si je comprends bien, Git a deux sortes de référentiels: l'un appelé local, l'autre appelé distant. Mes questions sont extrêmement naïves sur les deux types de référentiels.

Est-ce exact de dire

  • Le référentiel local Git est celui sur lequel nous apporterons des modifications locales, généralement ce référentiel local se trouve sur notre ordinateur.

  • Le référentiel distant Git est celui du serveur, généralement une machine située à 68 km.

Une autre question: un tutoriel me montre ce workflow

  • mkdir myproject
  • cd myproject
  • git init
  • touchez README
  • git add README
  • git commit -a -m "

Je vois ça git init crée monprojet un référentiel local. Ce que je ne comprends pas, c'est le git commit commande. Si je n'ai pas encore défini de référentiel distant, comment Git peut-il savoir où valider mon fichier README ??

J'espère avoir été clair.

[EDIT] La façon dont j'utilise Git peut être différente des autres: j'utilise un dépôt Git privé pour sauvegarder mes codes. Je pense donc que j'ai besoin d'un référentiel distant. Le référentiel local doit être absurde dans ce cas. Ai-je raison? Merci pour la clarification. Ce sont les questions les plus naïves auxquelles je ne trouve pas de réponses ailleurs ...

50
zell

Ce qui rend git si génial, c'est que c'est un système de contrôle de version distribué. Votre référentiel local a exactement les mêmes caractéristiques et fonctionnalités que tout autre référentiel git. Ainsi, un référentiel git sur un serveur est identique à un référentiel git sur github (le github accordé ajoute des fonctionnalités supplémentaires, mais à la base vous avez affaire à des référentiels git), ce qui est le même que le référentiel local de votre collègue.

Alors pourquoi est-ce génial? Parce qu'il n'y a pas de référentiel central auquel vous devez avoir accès pour faire votre travail. Vous pouvez valider, créer des succursales et faire la fête sur votre propre référentiel sur votre machine locale, même sans accès à Internet. Ensuite, lorsque vous vous reconnectez, vous pouvez pousser vos modifications vers n'importe quel autre dépôt git auquel vous avez accès. Ainsi, alors que la plupart des gens traitent un référentiel particulier comme le référentiel central, c'est un choix de processus, pas une exigence git.

Le but de tout cela était de déclarer (comme d'autres l'ont fait) que vous validez votre README dans votre référentiel local. Ensuite, chaque fois que vous le souhaitez, vous pouvez pousser les modifications de votre référentiel local vers n'importe quel autre repo. C'est assez chouette!

42
agmin

Comme je rencontre exactement les mêmes questions que la vôtre ( venant de VSS et TFS état d'esprit ) et au cours des 3 derniers jours a commencé à comprendre. Je pense que ce genre de diagrammes serait plus utile pour comprendre la situation dans son ensemble pour quiconque emprisonné là-bas.

de: https://greenido.files.wordpress.com/2013/07/git-local-remote.png?w=696&h=57

Git Flow diagram 1

Un autre, de: https://wiki.lsr.ei.tum.de/lib/exe/fetch.php?media=nst/programming/git_flow.jpg&w=500&tok=e87798

Git flow diagram 2

48
Bishoy Hanna

Si je n'ai pas encore défini de référentiel distant, comment Git peut-il savoir où valider mon fichier README ??

Vous vous engagez dans votre référentiel local (qui est un référentiel approprié avec son propre contrôle des modifications; ce n'est pas seulement une extraction locale ... puisque vous l'avez créé localement, ce n'est pas même une caisse locale!).

Si vous souhaitez envoyer des modifications à un référentiel distant (pour les sauvegarder, les rendre disponibles aux autres membres de l'équipe ou les publier dans le monde), vous devez Push les.

12
Quentin

Votre déclaration citée est correcte.

Vous n'avez pas du tout besoin d'avoir un référentiel distant.
Vous pouvez avoir l'expérience complète de git, avec des validations, des branches, des fusions, des rebases, etc., avec seulement un référentiel local.

Le but d'un référentiel distant (par exemple, GitHub) est de publier votre code dans le monde (ou pour certaines personnes) et de leur permettre de le lire ou de l'écrire.

Le référentiel distant n'est impliqué que lorsque vous git Push votre section locale s'engage dans un référentiel distant, ou lorsque vous git pull quelqu'un d'autre s'en engage.

11
SLaks

Le besoin d'une instance de référentiel distant sur github par exemple est seulement de partager le code avec d'autres programmeurs, car ils peuvent simplement accéder à votre dépôt git (à moins qu'ils ne se connectent à votre PC en utilisant votre ip et qu'ils n'ont alors accès qu'à vos modifications seulement, mais pas les modifications d'autres programmeurs), c'est pourquoi `` validez vos modifications de votre référentiel local dans le référentiel distant/central afin que d'autres développeurs puissent les vérifier et finalement se retrouver avec le même état du logiciel. Mais à la fin, si vous êtes le seul développeur, vous n'avez pas vraiment besoin d'un référentiel distant/central.

0
velocity