Je continue à entendre des gens dire qu'ils forkent du code dans git. Git "fork" ressemble étrangement à git "clone" plus une volonté psychologique (sans signification) de renoncer aux fusions futures. Il n'y a pas de commande fork dans git, n'est-ce pas ?
La "bifurcation" est un concept, et non une commande spécifiquement prise en charge par un système de contrôle de version.
Le type le plus simple de bifurcation est synonyme de branchement. Chaque fois que vous créez une branche, quel que soit votre VCS, vous avez "bifurqué". Ces bifurcations sont généralement assez faciles à fusionner à nouveau.
Le type de fork 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é comme Subversion. Un VCS distribué comme Git a une bien meilleure prise en charge de la bifurcation de la base de code entière et du démarrage effectif d'un nouveau projet.
Git (pas GitHub) supporte nativement le "forking" d'un repo entier (c'est-à-dire le cloner) de plusieurs façons :
- quand vous clonez, une télécommande appelée
origin
est créé pour vous
- par défaut, toutes les branches du clone suivront leurs
origin
équivalents
- récupérer et fusionner les modifications du projet original à partir duquel vous avez bifurqué est trivialement facile
Avec Git, il suffit de demander à un membre du projet d'origine de reprendre les sources de la bifurcation, ou de demander un accès en écriture pour reprendre les modifications. C'est cette partie que GitHub rend plus facile et standardise.
Des craintes concernant l'extension de git par Github dans cette direction ? Ou des rumeurs d'absorption de cette fonctionnalité par git ?
Il n'y a pas d'angoisse parce que votre hypothèse est fausse. GitHub "étend" la fonctionnalité de bifurcation de Git avec une interface graphique agréable et une manière standardisée d'émettre des demandes de retrait, mais il ne ajouter la fonctionnalité à Git. Le concept de full-repo-forking est intégré dans le contrôle de version distribué à un niveau fondamental. Vous pouvez abandonner GitHub à tout moment et continuer à pousser/tirer les projets que vous avez "bifurqués".
12 votes
Oui, c'est juste un type de clone qui est suivi par la base de données github.
16 votes
GitHub ne fait-il pas quelque chose de spécial pour éviter de doubler les besoins de stockage (sur les propres serveurs de GitHub) ?
21 votes
Pas encore mentionné : La suppression d'un repo privé supprime toutes ses fourches. La suppression d'un repo public conserve les forks mais promeut un fork pour être le nouveau repo parent. Si votre patron rend votre repo public privé, cela casse tous les forks existants et vous ne pourrez pas faire de demandes de pull depuis ceux-ci vers le repo privé. aide.github.com/articles/
0 votes
Je pense (sans preuve puisque GitHub ne nous le montre pas) que le mécanisme réel ici est les "alternates" de Git. En d'autres termes, le fork est un clone miroir avec
--reference
utilisé. La façon exacte dont les dépôts publics et les suppressions sont gérés n'est pas du tout claire (déplacer les alternatives vers un dépôt promu choisi aléatoirement ? diriger toutes les bifurcations vers une alternative commune qui ne fait pas partie de la bifurcation originale ?