Question Les git-forks sont-ils réellement des clones git?


Je n'arrête pas d'entendre les gens dire qu'ils sont en train de forcer le code en git. Git "fourchette" sonne étrangement comme "clone" git plus une certaine volonté psychologique (sans signification) de renoncer à des fusions futures. Il n'y a pas de commande fork dans git, non?

Github rend les fourchettes un peu plus réelles en y agrafant la correspondance. Autrement dit, vous appuyez sur le bouton de la fourche et plus tard, lorsque vous appuyez sur le bouton de demande de traction, le système est assez intelligent pour envoyer un courriel au propriétaire. Par conséquent, c'est un peu une danse autour de la propriété de repo et des autorisations.

Oui Non? Toute angoisse sur Github prolongeant git dans cette direction? Ou des rumeurs de git absorbant la fonctionnalité?


712
2018-06-08 23:45


origine


Réponses:


Fourchette, dans le contexte GitHub, ne pas étendre Git.
Il permet seulement de cloner du côté serveur.

Lorsque vous clonez un dépôt GitHub sur votre poste de travail local, vous ne pouvez pas contribuer au dépôt en amont, sauf si vous êtes explicitement déclaré comme "contributeur". C'est parce que votre clone est une instance distincte de ce projet. Si vous voulez contribuer au projet, vous pouvez utiliser le forking de la manière suivante:

  • cloner ce repo GitHub sur votre compte GitHub (c'est le partie "fourchette", un clone du côté serveur)
  • contribuer s'engage à ce repo GitHub (il est dans votre propre compte GitHub, donc vous avez le droit de pousser dessus)
  • signaler toute contribution intéressante retour au repo GitHub d'origine (c'est le "tirer la demande" partie au moyen des changements que vous avez effectués sur votre propre dépôt GitHub)

Vérifiez aussi "Flux de travail GitHub collaboratif".

Si vous voulez garder un lien avec le repo d'origine (également appelé en amont), vous devez ajouter une télécommande faisant référence à ce repo original.
Voir "Quelle est la différence entre l'origine et l'amont dans github"

fork and upstream


828
2018-06-09 00:37



Je n'arrête pas d'entendre les gens dire qu'ils sont en train de forcer le code en git. Git "fourchette" sonne étrangement comme "clone" git plus une certaine volonté psychologique (sans signification) de renoncer à des fusions futures. Il n'y a pas de commande fork dans git, non?

Je pense que vous avez une drôle d'idée de ce que «forking» signifie. C'est un concept, pas une commande spécifiquement supportée par un système de contrôle de version.

Le type le plus simple de forking est synonyme de branchement. Chaque fois que vous créez une branche, quel que soit votre VCS, vous avez "forké". Ces fourches sont généralement assez faciles à fusionner ensemble.

Le genre de fourchette dont vous parlez, où une partie séparée prend une copie complète du code et s'éloigne, se produit nécessairement en dehors du VCS dans un système centralisé comme Subversion. Un VCS distribué comme Git a un bien meilleur support pour forcer l'ensemble de la base de code et démarrer efficacement un nouveau projet.

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

  • lorsque vous clonez, une télécommande appelée origin est créé pour vous
  • par défaut, toutes les branches du clone suivront leur origin équivalents
  • récupérer et fusionner les modifications du projet d'origine dont vous avez dérivé est trivialement facile

Git apporte des changements contribuant à la source de la fourchette aussi simple que de demander à quelqu'un du projet original de tirer sur vous, ou de demander un accès en écriture pour repousser vous-même les changements. C'est la partie que GitHub rend plus facile et standardise.

Toute angoisse sur Github prolongeant git 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 forcement de Git avec une interface graphique agréable et une façon standard d'émettre des requêtes de tirage, mais cela ne fonctionne pas. ajouter la fonctionnalité de Git. Le concept de full-repo-forking est intégré dans un contrôle de version distribué à un niveau fondamental. Vous pouvez abandonner GitHub à tout moment et continuer à pousser / tirer des projets que vous avez "fourchus".


116
2018-06-09 15:59



Oui Fork est un clone. Il est apparu parce que, vous ne pouvez pas pousser les copies des autres sans leur permission. Ce qu'ils font est de faire un copie pour toi (fourchette), où vous aurez également la permission d'écrire.

Dans le futur, si le propriétaire actuel ou d'autres utilisateurs avec une fourchette comme vos changements, ils peuvent le ramener à leur propre repo. Alternativement vous pouvez leur envoyer une "pull-request".


67
2018-06-09 21:12



"Fork" dans ce contexte signifie "Faites une copie de leur code pour pouvoir ajouter mes propres modifications". Il n'y a pas grand chose d'autre à dire. Chaque clone est essentiellement une fourche, et c'est à l'original de décider s'il faut tirer les changements de la fourche.


36
2018-06-08 23:51



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


23
2018-06-09 00:24



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 référentiel localement, l'origine de l'objet distant utilise toujours le compte duquel vous avez cloné. Vous ne pouvez pas valider et contribuer votre code. C'est juste une copie pure des codes. Sinon, si vous utilisez un référentiel, il clone le repo avec la mise à jour de votre compte dans votre compte github. Puis, en clonant le repo dans le contexte de votre compte, vous pouvez valider vos codes.


9
2018-06-04 19:30



La fourchette est faite lorsque vous décidez de contribuer à un projet. Vous feriez une copie de l'ensemble du projet avec ses historiques. Cette copie est faite entièrement dans votre dépôt et une fois que vous apportez ces modifications, vous lancez une requête de tirage. Maintenant, c'est au propriétaire de la source d'accepter votre demande de tirage et d'incorporer les changements dans le code original.

Git clone est une commande réelle 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 dépôt local.


9
2018-06-11 18:40