web-dev-qa-db-fra.com

différence entre fourche et branche sur github

Si je lance un projet hébergé sur github. Est-ce que je fourche toutes les branches? Comment savoir sur quelle branche ma fourche est basée? En d'autres termes, quelle branche sera téléchargée sur mon PC?

121
Jonathan.

Toutes les branches de GitHub seront copiées dans une fourchette. (Évidemment, cela n'inclut pas les branches qui n'ont jamais été poussées vers GitHub.)

Mais un fork est une opération de GitHub à 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é quand je clone un projet?", Consultez le manuel de git-clone(1) .

42
J. C. Salomon

Pense-y de cette façon:

The repo [sitory] correspond au travail collaboratif de l'équipe sur une ou plusieurs branches. Tous les contributeurs en ont leur propre copie.

Chaque fork du référentiel principal correspond au travail d'un contributeur. Un fork est vraiment une construction Github (pas Git) pour stocker un clone du référentiel dans votre compte utilisateur. En tant que clone, il contiendra toutes les branches du référentiel principal au moment où vous avez créé la branche.

Chaque branche dans la fourche et/ou dans le référentiel principal peut correspondre à plusieurs types d'éléments, en fonction de la manière dont vous souhaitez travailler. Chaque branche peut faire référence à une version du projet, mais peut également correspondre à différents canaux de développement, tels que des correctifs logiciels ou des travaux expérimentaux.

La demande d'extraction (dans l'écosystème GitHub) correspond à la tâche. Chaque fois que je veux contribuer une tâche finie isolée au référentiel principal, je crée une demande d'extraction correspondant au commits effectué dans cette tâche. Ces commits sont tirés de mon fork ou de mon branche vers le pension principale.

Un commit est un ensemble de modifications apportées au code. C'est l'une des choses les plus intéressantes à propos de Git. Vous ne transférez pas de fichiers, vous transférez des journaux de modifications.

136
Adam Grant

Fork est un clone du côté de GitHub (il clone tout).
Lorsque vous clonez une prise en pension, vous obtenez toute l’histoire de ladite prise en pension, avec toutes ses branches.

Même si vous pouvez en théorie changer 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 vous voulez changer la branche "par défaut" d'un clone GitHub, vous devez renommer la branche principale.

9
VonC

Si vous créez un projet, vous faites une copie de l'ensemble du projet sur votre compte git hub. vous ne faites rien face à votre PC

Pour faire une copie sur votre PC, vous devez le cloner et en extraire tout le contenu et vous obtiendrez toutes les branches et le code de ce projet.

3
Hunt

Si vous créez une branche de projet à partir du site Web de Github, vous obtenez toutes les branches du projet en amont.

Si vous clonez de votre fourche nouvellement frappée sur votre PC local, la télécommande Origin de votre PC pointe vers la branche principale de votre fourche sur Github.

2
bhamby

Cela s'explique très bien. Vous avez un référentiel central sur GitHub. Chaque fois que vous prenez un clone sur votre ordinateur personnel pour effectuer des modifications, ce clone local du référentiel principal est appelé un fork.

La branche est quelque chose de différent et est inclus 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 enregistrer un ensemble de fonctionnalités, donner accès à différents utilisateurs, montrer le site au client, etc.

1
Avinash Thombre

Je voudrais partager un exemple concret de lorsque nous utilisons des branches et lorsque nous utilisons des fourchettes

Nous avons GitLab dans notre magasin et nous devons parfois travailler sur des paquets provenant d'un projet Laravel. Nous créons normalement une branche et transmettons les modifications à la branche que nous avons testées dans notre section locale VM dev environnement lorsque vous travaillez avec le projet Laravel actuel.

Disons que notre projet est situé à

https://github.com/yardpenalty/mainproject.git

tilisation de la branche:

Disons que la branche s'appelle It_doesnt_matter

Une fois que nous avons notre branche comme nous le souhaitons pour la production, nous effectuons notre Push final vers cette branche et créez une demande de fusion qui passe ensuite dans UAT pour le test. Une fois que le test a été soumis au contrôle qualité, les modifications sont fusionné dans la production.

Le fusion du It_doesnt_matterbranche est maintenant poussé dans 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 mainproject utilise ce package en production afin que nous ne puissions pas apporter de modifications en les insérant simplement dans ce package (entre autres raisons). Supposons qu'un développeur Web doive éditer ce paquet pour apporter des modifications en production.

Une simple branche ne fonctionnera pas non plus car nous ne pouvons pas voir nos modifications sans publier le paquet, etc.

tilisation de la fourche: C'est maintenant que nous devons faire un peu de ruse avec notre paquet afin de créer un clone du paquet de production via une fourche. Les fichiers composer.json peuvent être mis à jour pour pointer vers le fork, situé à l'emplacement chemin de l'utilisateur ou du groupe

Nous allons donc créer un fork dans https://github.com/yardpenalty/mypackage.git

et appelez-le 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 "référentiels": [un tableau comme celui-ci et on s'en va!

 {
            "type": "github",
            "url": "https://github.com/yardpenalty/yard/mypackage.git"
 }

]

0
yardpenalty