Est-ce que git forks est vraiment un clone git?

j'entends sans cesse des gens dire qu'ils utilisent le code biométrique en gitan. Git " fourche "sonne étrangement comme git" clone " plus certains (sans signification) volonté psychologique de renoncer aux fusions futures. Il n'y a pas de commande fork en git, n'est-ce pas?

GitHub rend les fourchettes un peu plus réelles en y agrafant la correspondance. C'est-à-dire que vous appuyez sur le bouton de la fourchette et plus tard, lorsque vous appuyez sur le bouton "pull request", le système est assez intelligent pour envoyer un courriel au propriétaire. Donc, c'est un peu un danse autour de pensions de la propriété et les autorisations.

Oui / Non? Un problème avec Github qui s'étend dans cette direction? Ou des rumeurs d'absorption de la fonctionnalité par git?

736
demandé sur Madara Uchiha 2011-06-09 03:45:54

10 réponses

Fourche , dans le GitHub contexte, ne s'étend pas Git.

Il permet seulement le clone du côté du serveur.

lorsque vous clonez une pension GitHub sur votre poste de travail local, vous ne pouvez pas contribuer à la pension en amont à moins d'être explicitement déclaré comme "contributeur". C'est parce que votre clone est une instance séparée de ce projet. Si vous souhaitez contribuer au projet, vous pouvez utiliser la fourche à le faire, de la manière suivante:

  • clone que GitHub repo sur votre compte GitHub (qui est le " fork "part , un clone sur le côté serveur)
  • s'engage à contribuer à ce dépôt GitHub (c'est dans votre compte GitHub, donc vous avez tout à fait le droit de pousser à elle)
  • signal toute contribution intéressante à l'original GitHub repo (c'est-à-dire la partie "pull request") par les modifications que vous faites sur votre propre dépôt GitHub)

Vérifier " Collaboration GitHub Flux de travail ".

si vous voulez garder un lien avec le repo original (aussi appelé en amont), vous devez ajouter une télécommande se référant à ce repo original.

Voir" Quelle est la différence entre l'origine et l'amont dans github

fork and upstream

et avec Git 2.20 (Q4 2018) et plus, aller chercher à la fourche est plus efficace, avec delta islands .

849
répondu VonC 2018-09-22 16:42:57

j'entends des gens dire qu'ils sont en code biométrique. Git " fourche "sonne étrangement comme git" clone " plus certains (sans signification) volonté psychologique de renoncer aux fusions futures. Il n'y a pas de commande fork en git, n'est-ce pas?

je pense que vous avez une drôle d'idée de ce que la "bifurcation". C'est un concept, pas une commande spécifiquement supportée par un système de contrôle de version.

la forme la plus simple de bifurcation est synonyme avec la ramification. Chaque fois que vous créez une branche, indépendamment de votre CV, vous avez "fourche". Ces fourches sont généralement assez facile à fusionner ensemble.

le genre de bifurcation dont vous parlez, où une partie séparée prend une copie complète du code et s'en va, se produit nécessairement en dehors du VCS dans un système centralisé comme Subversion. Un VCS distribué comme Git a beaucoup mieux de soutien pour bifurquer le codebase entier et effectivement commencer un nouveau projet.

Git (pas GitHub) supporte nativement "bifurquer" un repo entier (c'est-à-dire le cloner) de plusieurs façons:

  • lorsque vous clonez, une télécommande appelée origin est créée pour vous
  • par défaut, toutes les branches du clone traqueront leurs" équivalents 151900920
  • chercher et fusionner les changements du projet d'origine que vous forked à partir est trivialement facile

git rend les modifications contributives à la source de la fourche aussi simples que demander à quelqu'un du projet original de vous retirer, ou Demander l'accès en écriture pour repousser les modifications vous-même. C'est la partie que GitHub rend plus facile et normalise.

un problème avec Github qui s'étend dans cette direction? Ou des rumeurs d'absorption de la fonctionnalité par git?

Il n'y a pas d'angoisse parce que votre hypothèse est mauvais. GitHub " étend "la fonctionnalité de bifurcation de Git avec une interface graphique agréable et une façon standardisée d'émettre des requêtes pull, mais il ne ajouter la fonctionnalité de git. Le concept de Full-repo-forking est fourré dans le contrôle de version distribué à un niveau fondamental. Vous pouvez abandonner GitHub à tout moment et continuer à pousser/tirer des projets que vous avez "fourchés".

120
répondu meagar 2018-02-07 13:05:17

Oui La Fourchette est un clone. Il est apparu parce que, vous ne pouvez pas pousser à des copies d'autres sans leur permission . Ce qu'ils font est de faire une copie de celui-ci pour vous ( fork ), où vous aurez aussi la permission d'écrire.

dans le futur si le propriétaire réel ou d'autres utilisateurs avec une fourchette comme vos changements, ils peuvent tirer à leur propre repo. Vous pouvez aussi leur envoyer un "pull-request".

70
répondu ssapkota 2012-05-10 03:35:04

"Fork"dans ce contexte signifie" faire une copie de leur code afin que je puisse ajouter mes propres modifications". Il n'y a pas grand chose d'autre à dire. Chaque clone est essentiellement une fourchette, et c'est à l'origine de décider de tirer les modifications de la fourche.

37
répondu Daenyth 2011-06-08 23:51:58
Le clonage

consiste à faire une copie du dépôt git sur une machine locale, tandis que bifurcation clone le dépôt dans un autre dépôt. Le clonage est réservé à un usage personnel (bien que des fusions futures puissent se produire), mais avec forking vous copiez et ouvrez un nouveau chemin de projet possible

24
répondu Sam Johnson 2011-06-09 00:24:57

je pense que fork est une copie d'un autre dépôt, mais avec la modification de votre compte. par exemple, si vous clonez directement un autre dépôt localement, l'origine de l'objet distant utilise toujours le compte d'où vous clonez. Vous ne pouvez pas vous engager et contribuer votre code. Ce n'est qu'une simple copie de codes. Sinon, si vous bifurquez un dépôt, il clonera la pension avec la mise à jour de vos paramètres de compte dans votre compte github. Et puis cloner la pension dans le contexte de votre compte, vous pouvez vos codes.

10
répondu Daniel Shen 2013-06-04 19:30:37

fourche est fait lorsque vous décidez de contribuer à un projet. Vous feriez une copie de l'ensemble du projet avec ses journaux d'histoire. Cette copie est faite entièrement dans votre dépôt et une fois que vous avez fait ces modifications, vous lancez une demande de pull. Maintenant sa le propriétaire de la source d'accepter votre demande d'extraction et d'intégrer les modifications dans le code original.

Git clone est une commande qui permet aux utilisateurs d'obtenir une copie de la source. git clone [URL] Ce devrait créer une copie de [URL] dans votre propre dépôt local.

10
répondu aliasav 2014-06-11 18:40:02

outre le fait que le clonage est du serveur à votre machine et que bifurcation fait une copie sur le serveur lui-même, une différence importante est que lorsque nous clonons, nous obtenons effectivement toutes les branches, étiquettes, etc. Mais quand nous bifurquons, nous n'obtenons en fait que les fichiers courants dans la branche principale, rien d'autre que cela. Cela signifie que nous n'avons pas les autres branches, etc. Par conséquent, si vous devez fusionner quelque chose de nouveau à la repo originale, il s'agit d'une fusion inter-repo et aura certainement besoin de plus privilège.

Fork n'est pas une commande en git, c'est juste un concept que GitHub implémente. Rappelez-vous Git a été conçu pour fonctionner dans l'environnement pair à pair sans avoir besoin de synchroniser des choses avec une copie de maître. Le serveur est juste un autre pair mais nous le regardons comme une copie de maître.

8
répondu Deepak G M 2015-04-23 05:51:32

il y a un malentendu ici en ce qui concerne ce qu'est une" fourchette". Une fourche est en fait rien de plus qu'un ensemble de par utilisateur branches. Quand vous poussez à une fourchette, vous poussez effectivement à la pension d'origine parce que c'est la seule pension.

vous pouvez essayer cela en poussant à une fourchette, en notant la propagation et en allant ensuite à la restitution originale et en utilisant l'ID de propagation, vous verrez que la propagation est" dans " la restitution originale.

cela a beaucoup de sens mais est loin d'être évident (Je ne l'ai découvert accidentellement que récemment).

quand John forks repo SuperProject ce qui semble se produire est que toutes les branches dans le repo source sont répliquées avec un nom comme "John.maître " et " John.new_gui_project" etc.

Github "cache" le " John."de nous et nous donne l'illusion que nous avons notre propre "copie" de l'opération sur Github, mais nous ne sommes pas et n'est même nécessaire.

donc ma fourchette est branche "maître" est en fait appelé " Korporal.maître "mais le GitHub UI ne le révèle jamais, me montrant seulement "maître".

C'est à peu près ce que je pense qui se passe sous le capot de toute façon basé sur des choses que j'ai fait récemment et quand vous y réfléchir, est très bon design.

pour cette raison, je pense qu'il serait très facile pour Microsoft d'implémenter git forks dans leur offre de services D'équipe Visual Studio.

3
répondu Hugh 2017-08-26 18:38:05

en termes simples,

quand vous dites que vous êtes Forking un dépôt, vous créez essentiellement une copie du dépôt original sous votre ID GitHub dans votre compte Github.

et

quand vous dites que vous êtes Cloner un dépôt, vous créez une copie locale du dépôt original dans votre système(pc/lappy) directement sans avoir une copie dans votre Github compte.

0
répondu anoNewb 2018-10-04 12:42:44