Les fourches git sont-elles réellement des clones?

J’entends toujours des gens dire qu’ils font du code avec git. Git “fork” ressemble étrangement à git “clone” plus une volonté psychologique (sans signification) de renoncer à de futures fusions. Il n’y a pas de commande de fourchette dans git, non?

Github rend les fourches un peu plus réelles en agrafant la correspondance. C’est-à-dire que vous appuyez sur le bouton de la fourchette et, plus tard, lorsque vous appuyez sur le bouton de demande de tirage, le système est suffisamment intelligent pour envoyer un courrier électronique au propriétaire. Par conséquent, c’est un peu une danse autour de la propriété de repo et des permissions.

Oui Non? Des angoisses sur Github se prolongeant dans cette direction? Ou des rumeurs de git absorbant la fonctionnalité?

Fork , dans le contexte GitHub, n’étend pas Git.
Il ne permet que le clonage côté serveur.

Lorsque vous clonez un référentiel GitHub sur votre poste de travail local, vous ne pouvez pas consortingbuer à nouveau au référentiel amont sauf si vous êtes explicitement déclaré comme “consortingbuteur”. C’est parce que votre clone est une instance distincte de ce projet. Si vous souhaitez consortingbuer au projet, vous pouvez utiliser la méthode suivante:

  • cloner ce repository GitHub sur votre compte GitHub (c’est la partie “fork” , un clone du côté serveur)
  • consortingbuer à ce repo GitHub (c’est dans votre propre compte GitHub, vous avez donc tout à fait le droit de le faire)
  • signaler toute consortingbution intéressante au repository initial de GitHub (c’est-à-dire la partie “demande de tirage” par le biais des modifications que vous avez apscopes à votre propre référentiel GitHub)

Vérifiez également ” Collaborative GitHub Workflow “.

Si vous souhaitez conserver un lien avec le repository d’origine (également appelé en amont), vous devez append une référence à distance de ce repository original.
Voir ” Quelle est la différence entre origine et amont dans github ”

fourche et amont

J’entends toujours des gens dire qu’ils font du code avec git. Git “fork” ressemble étrangement à git “clone” plus une volonté psychologique (sans signification) de renoncer à de futures fusions. Il n’y a pas de commande de fourchette dans git, non?

Je pense que vous avez une idée amusante de ce que “forking” signifie. C’est un concept, pas une commande spécifiquement prise en charge par un système de contrôle de version.

Le type le plus simple de forgeage est synonyme de twigment. Chaque fois que vous créez une twig, quel que soit votre VCS, vous avez “bifurqué”. Ces fourches sont généralement assez faciles à regrouper.

Le type de fourche dont vous parlez, où une partie distincte prend une copie complète du code et s’en va, se produit nécessairement en dehors du VCS dans un système centralisé tel que Subversion. Un VCS dissortingbué tel que Git prend bien mieux en charge le forçage du code entier et le lancement effectif d’un nouveau projet.

Git (pas GitHub) supporte nativement un “repo” complet (c.-à-d. Le clonant) de plusieurs manières:

  • lorsque vous clonez, une origin appelée à distance est créée pour vous
  • par défaut, toutes les twigs du clone suivront leurs équivalents d’ origin
  • extraire et fusionner les modifications du projet d’origine à partir duquel vous avez tiré est très simple

Git permet de redirect les modifications vers la source de la fourche aussi simplement que de demander à une personne du projet original de vous extraire ou de demander un access en écriture pour repasser les modifications vous-même. C’est la partie que GitHub facilite et standardise.

Des angoisses sur Github se prolongeant dans cette direction? Ou des rumeurs de git absorbant la fonctionnalité?

Il n’y a pas d’angoisse parce que votre hypothèse est fausse. GitHub “étend” la fonctionnalité de traçage de Git avec une interface graphique conviviale et une méthode standardisée pour émettre des requêtes d’extraction, mais elle n’ajoute pas la fonctionnalité à Git. Le concept de full repo-forking est parfaitement intégré au contrôle de version dissortingbué à un niveau fondamental. Vous pouvez abandonner GitHub à tout moment et continuer à pousser / tirer des projets que vous avez “créés”.

Oui, Fork est un clone. Il a émergé parce que, vous ne pouvez pas pousser aux copies des autres sans leur permission . Ce qu’ils font, c’est en faire une copie pour vous ( fork ), où vous aurez également la permission d’écrire.

À l’avenir, si le propriétaire actuel ou d’autres utilisateurs avec une fourchette comme vos changements peuvent le récupérer dans leur propre repository. Vous pouvez également leur envoyer une “demande de retrait”.

“Fork” dans ce contexte signifie “Faites une copie de leur code afin que je puisse append mes propres modifications”. Il n’y a pas grand chose d’autre à dire. Chaque clone est essentiellement une fourchette, et c’est à l’original de décider s’il faut extraire les modifications de la fourchette.

Le clonage consiste à copier le référentiel git sur une machine locale, tandis que le clonage consiste à cloner le référentiel dans un autre référentiel. Le clonage est destiné à un usage personnel uniquement (bien que de futures fusions puissent avoir lieu), mais en imitant, vous copiez et ouvrez un nouveau chemin de projet possible.

Je pense que fork est une copie d’un autre repository mais avec votre modification de compte. Par exemple, si vous clonez directement un autre référentiel localement, l’origine de l’object distant utilise toujours le compte à partir duquel vous clonez. Vous ne pouvez pas commettre et consortingbuer votre code. C’est juste une copie pure des codes. Sinon, si vous créez un repository, il clonera le repository avec la mise à jour de votre compte dans votre compte github. Et puis, clonant le repository dans le contexte de votre compte, vous pouvez valider vos codes.

Forking est fait lorsque vous décidez de consortingbuer à un projet. Vous feriez une copie de l’ensemble du projet avec ses historiques. Cette copie est faite entièrement dans votre référentiel et une fois que vous apportez ces modifications, vous émettez une demande d’extraction. Il appartient maintenant au propriétaire de la source d’accepter votre demande d’extraction et d’intégrer les modifications au code d’origine.

Git clone est une commande qui permet aux utilisateurs d’obtenir une copie de la source. git clone [URL] Cela devrait créer une copie de [URL] dans votre propre repository local.

Mis à part le fait que le clonage est du serveur vers votre machine et que le piratage fait une copie sur le serveur lui-même, une différence importante est que lorsque nous clonons, nous obtenons toutes les twigs, étiquettes, etc. ne récupère que les fichiers actuels dans la twig principale, rien d’autre que cela. Cela signifie que nous n’obtenons pas les autres twigs, etc. Par conséquent, si vous devez fusionner quelque chose avec le repository initial, c’est une fusion inter-repo et vous aurez certainement besoin de privilèges plus élevés.

Fork n’est pas une commande dans git, c’est juste un concept que Github implémente. Rappelez-vous que Git a été conçu pour fonctionner dans un environnement peer-to-peer sans avoir à synchroniser des éléments avec une copie maîtresse. Le serveur n’est qu’un autre pair, mais nous le considérons comme une copie maîtresse.

Il y a un malentendu en ce qui concerne ce qu’est une “fourchette”. Un fork n’est en fait rien de plus qu’un ensemble de twigs par utilisateur. Lorsque vous poussez sur une fourche, vous repoussez le repo original car c’est le seul repo.

Vous pouvez essayer ceci en appuyant sur un fork, en notant le commit, puis en accédant au repository d’origine et en utilisant l’ID de validation, vous verrez que le commit est “dans” le repository d’origine.

Cela fait beaucoup de sens mais est loin d’être évident (je l’ai découvert par accident récemment).

Lorsque John fait une reprise en pension de SuperProject, il semble que toutes les twigs du repository source soient répliquées avec un nom comme “John.master” et “John.new_gui_project”, etc.

Github “cache” le “John”. de nous et nous donne l’illusion que nous avons notre propre “copie” du repo dans Github, mais nous ne le sums pas et ni n’est même nécessaire.

Donc, la twig “master” de mon fork s’appelle en réalité “Korporal.master” mais l’interface utilisateur de Github ne le révèle jamais, me montrant uniquement “master”.

C’est à peu près ce que je pense qui se passe sous le capot de toute façon, sur la base de ce que j’ai fait récemment et quand on y réfléchit, c’est un très bon design.

Pour cette raison, je pense qu’il serait très facile pour Microsoft d’implémenter des fourches Git dans leur offre de services Visual Studio Team.