Si je fork un projet hébergé sur github. Dois-je fourcher toutes les branches? Comment savoir sur quelle branche mon fork est basé? En d'autres termes, quelle branche sera téléchargée sur mon PC?
Si je fork un projet hébergé sur github. Dois-je fourcher toutes les branches? Comment savoir sur quelle branche mon fork est basé? En d'autres termes, quelle branche sera téléchargée sur mon PC?
Réponses:
Toutes les branches sur GitHub seront copiées dans un fork. (Évidemment, cela n'inclut pas les branches qui n'ont jamais été poussées vers GitHub en premier lieu.)
Mais un fork est une opération GitHub-to-GitHub; rien n'est copié sur votre PC. Ce n'est pas tout à fait la même chose qu'un clone Git . Si vous voulez demander «qu'est-ce qui est copié lorsque je cloné un projet?», Consultez le manuel de git-clone(1)
.
Pense-y de cette façon:
Le repo [sitory] correspond au travail collaboré de l'équipe sur une ou plusieurs branches. Tous les contributeurs en ont leur propre copie.
Chaque fourchette du repo principal correspond au travail d'un contributeur. Un fork est en fait une construction Github (pas Git) pour stocker un clone du dépôt dans votre compte utilisateur. En tant que clone, il contiendra toutes les branches du repo principal au moment où vous avez créé le fork.
Chaque branche dans le fork et / ou dans le repo principal peut correspondre à plusieurs types de choses, selon la façon dont vous voulez travailler. Chaque branche peut faire référence à une version du projet mais peut également correspondre à différents canaux de développement, comme des correctifs ou des travaux expérimentaux.
La pull request (dans l'écosystème GitHub) correspond à la tâche. Chaque fois que je souhaite contribuer une tâche terminée isolée au référentiel principal, je crée une pull request correspondant aux validations effectuées dans cette tâche. Ces validations sont extraites de ma fourchette ou de ma branche vers le repo principal .
Un commit est un ensemble de modifications du code. C'est l'une des choses les plus intéressantes à propos de Git. Vous ne transférez pas de fichiers, vous transférez les journaux des modifications.
Fork est un clone côté GitHub (il clone tout).
Lorsque vous clonez un repo, vous obtenez l'historique complet dudit repo, avec toutes ses branches.
Même si vous pouvez en théorie modifier la branche par défaut d'un référentiel distant , un clone d'un référentiel GitHub recherche principalement la branche principale. Cela signifie que pour changer la branche "par défaut" qu'un clone GitHub obtiendra, vous devez renommer la branche principale.
Si vous créez un fork d'un projet à partir du site Web Github, vous obtenez toutes les branches du projet en amont.
Si vous clonez de votre fourchette nouvellement créée sur votre PC local, vous aurez la origin
télécommande sur votre PC pointant vers la branche principale de votre fourchette sur Github.
upstream
branche est quelque chose que vous devez faire; et ils vous disent comment le faire.
Cela s'explique très bien. Vous avez un référentiel central sur GitHub. Chaque fois que vous en prenez un clone sur votre ordinateur personnel pour apporter des modifications, ce clone local du référentiel principal est appelé un fork.
La branche est quelque chose de différent et est incluse dans le fork / repo. En fait, la branche est votre travail à différents stades de développement. Ils sont créés au fur et à mesure des besoins pour sauvegarder un ensemble de fonctionnalités, pour donner accès à différents utilisateurs, pour démontrer le site au client, etc.
Je voudrais partager un exemple concret de quand nous utilisons Branches et quand nous utilisons Forks
Nous avons GitLab dans notre boutique et parfois nous devons travailler sur des packages d'un projet Laravel. Nous créons normalement une branche et envoyons les modifications à la branche que nous avons testée dans notre environnement de développement VM local lorsque nous travaillons avec le projet Laravel.
Disons que notre projet est situé à
https://github.com/yardpenalty/mainproject.git
Utilisation de la succursale:
Disons que la branche est appelée It_doesnt_matter
Une fois que nous avons notre branche comme nous le souhaitons pour la production, nous effectuons notre dernière poussée vers cette branche et créons une demande de fusion qui va ensuite dans UAT pour le test.Une fois le test passé par QC, les changements sont fusionnés dans la production.
La fusion de la It_doesnt_matter
branche est maintenant poussée vers le projet maître
à https://github.com/yardpenalty/mainproject.git
Disons que le projet de package est situé à
https://github.com/yardpenalty/mypackage.git
Gardez à l'esprit que le projet principal utilise ce package en production, nous ne pouvons donc pas apporter de modifications en les poussant simplement vers ce package (entre autres raisons). Disons qu'un développeur Web doit modifier ce package pour apporter des modifications à la production.
Une simple branche ne fonctionnera pas non plus car nous ne pouvons pas voir nos modifications sans publier le package, etc.
Utilisation de Fork: C'est maintenant que nous devons faire un peu de supercherie avec notre package afin de créer un clone du package de production via un fork. Les fichiers composer.json peuvent être mis à jour pour pointer vers le fork qui se trouve maintenant sur un chemin utilisateur ou groupe
Nous allons donc créer une fourchette dans https://github.com/yardpenalty/mypackage.git
et l'appelle https://github.com/yardpenalty/yards/mypackage.git
Nous pouvons maintenant mettre à jour notre fichier composer.json pour qu'il pointe vers ce paquet dans nos "dépôts": [tableau comme tel et c'est parti!
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]