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?
github
branch
git-branch
git-fork
Jonathan.
la source
la source
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)
.la source
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.
la source
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.
la source
Si vous forkez un projet, vous faites une copie de l'ensemble du projet sur votre compte git hub. vous ne copiez rien sur votre PC
Pour faire une copie sur votre PC, vous devez le cloner et extraire tout le contenu et vous obtiendrez toutes les branches et le code de ce projet
la source
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.la source
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.
la source
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é à
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é à
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!
]
la source