Je viens de fourrer un projet à Github. J'ai effectué des modifications et envoyé une demande de traction. Le propriétaire a fusionné ma fourchette avec le projet principal et après cela, il a apporté des modifications. Donc, pour l'instant ma fourchette n'est pas mise à jour avec le projet principal. Les modifications qu'il a faits me manquent après la fusion de ma demande de traction. Comment puis-je mettre à jour ma fourchette avec le projet principal? Y a-t-il un moyen de le faire dans l'interface Web?
Merci
Par conception, Forking Un projet crée un repo séparé qui n'est pas mis à jour lorsque le repo d'origine change. Cependant, git
le rend assez facile à mettre à jour manuellement.
Vous avez besoin de l'aide d'un 3ème référentiel (votre copie locale suffit). Il y a 3 repos:
git clone [email protected]:your-username/projectname.git
, et que tout le monde utilise la succursale master
.En supposant que "l'origine" et "locale" sont dans le même état et "en amont" est en avance sur 1 ou plusieurs commits (la fusion et les modifications ultérieures).
Ajoutez d'abord le projet en amont en tant que GIT REMOTE :
git remote add upstream https://github.com/upstream-username/projectname.git
Puis tirer (signification fetch , puis Fusionner automatiquement) les changements de la Remote master
succursale dans la branche actuelle de votre référentiel local (master
) succursale:
git pull upstream master
Maintenant, votre référentiel local est synchronisé avec upstream
. Enfin, poussez votre repo local à votre fourchette Github:
git Push Origin master
Maintenant tout est en synchronisation.
J'ai trouvé cette réponse pour compléter la réponse originale car celle-ci ne traite que de synchroniser une branche (maître). De plus, si la branche a été créée sur l'amont depuis votre fourchette, il est un peu plus impliqué pour la créer sur votre fourchette.
La réponse courte est de mettre à jour votre fourchette avec chaque branche du référentiel en amont, exécutez cette commande.
for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git Push Origin refs/remotes/upstream/$branch:refs/heads/$branch; done
Ce que cela ne fait pas, c'est supprimer des branches de votre fourchette qui ont été supprimées de l'amont. Il n'y a aucun moyen d'automatiser cela surtout si vous avez créé des succursales sur votre fourchette.