Comment mettre à jour un fork GitHub Repo dans l'interface Web?

58

J'ai un dépôt Github que j'ai créé à partir d'un autre projet il y a plusieurs mois. Plusieurs mois plus tard, le référentiel principal a été modifié. Je voudrais mettre à jour mon rapport pour refléter ces changements. Est-ce possible dans l'interface Web Github? Ou dois-je simplement supprimer le dépôt et le re-créer?

Jake Wilson
la source

Réponses:

43

Vous pouvez essayer d'inverser la manière dont les demandes d'extraction se produisent.

  1. Va à ta fourchette
  2. Émettre une demande de tirage

    Par défaut, ce sera votre fork à droite ( head repo ) demandant à pousser ses commits et les modifications apportées au repo d'origine ( base repo ) à gauche.

  3. Cliquez sur le menu déroulant du référentiel de base et du référentiel principal, puis sélectionnez les référentiels respectifs.

    Vous voulez que le vôtre soit répertorié à gauche (accepter les modifications), tandis que le référentiel d'origine se trouve à droite (celui avec les modifications à appliquer). Comme illustré dans cette image:

    fourchette faite sur elle-même

  4. Envoyer la demande de tirage

    Si votre branche n'a pas subi de modifications, vous devriez pouvoir accepter automatiquement la fusion.

Si votre code entre en conflit ou n'est pas assez propre, la mise à jour via l'interface Web de GitHub ne fonctionnera pas. Vous devrez saisir le code et résoudre les conflits éventuels sur votre ordinateur avant de revenir à votre plate-forme.

Huit jours de malaise
la source
3
Cela fonctionne toujours mais oui ce n'est pas idéal. C'est vraiment juste un tour. Pas la bonne façon de le faire.
Jake Wilson
3
Confirmé une mauvaise idée. Cela pollue le référentiel de manière à ce que Github vous suggère d'extraire une demande de validation vide pour le projet d'origine. Voir, par exemple, github.com/dthommes/RoboSpring/pull/3 - Une fois que j'y ai contribué, puis j'ai synchronisé et Github veut maintenant que je pousse un commit "Synchronisation de ma fourchette" intitulé "Fusionner la requête de tir n ° 1 de dthommes / master … "
usr-local-ΕΨΗΕΛΩΝ
1
Je ne pense pas que cela fonctionne plus. Bien que cela semble un peu étrange, il n’ya pas de moyen simple de le faire.
Toby Allen
1
Je viens de l'essayer et cela n'a pas semblé immédiatement fonctionner - lors du changement d' une des fourches, une page "Comparaison des modifications" a immédiatement été ouverte. Mais en cliquant sur le lien "comparer entre les fourches", on a quand même pu changer l'autre fourche. Peut-être pourriez-vous ajouter quelque chose à cet effet à votre réponse.
Peter Mortensen
4
GitHub devrait ajouter un bouton "Sync Fork" afin que vous n'ayez pas à créer un million de PR. Pour l'instant
j'utilise
23

Ça va être plus facile.

  1. Allez au dossier Forked (le vôtre) et cliquez simplement sur le bouton - "Nouvelle demande de tir".
  2. Sur la page qui s'ouvre, il y a un petit lien vers "base de changement" dans le message sous la liste déroulante. Cliquer sur le lien.
  3. Maintenant, cela mènera automatiquement à votre dépôt initial. Cliquez sur le bouton Create Pull Request et écrivez un message de validation.
  4. Désormais, cela mènera automatiquement à votre référentiel forké, cliquez sur Fusionner demande d'extraction et sur Confirmer la fusion pour terminer.
Youngjae
la source
Vous devriez clarifier ce que sont ces boutons verts et ce serait une excellente réponse ....
Rodrigo Graça
C'est certainement la meilleure réponse à partir de 4/2016.
dr01
7
Le problème avec cette méthode est qu’elle ajoute un commit supplémentaire à votre branche, elle n’est donc pas vraiment synchronisée avec le référentiel en amont.
Mottie
@Mottie Y a-t-il un moyen pour nous de savoir si notre fourche est derrière la dernière version en amont et de voir la diff des modifications sans les retirer?
Sujay Phadke
1
@SujayPhadke Sur votre page de référentiel forké, sous le bouton de sélection de branche, le message "Cette branche correspond à xx commet derrière xxxx: maître.". Pour ce qui est de voir le diff, il y a un bouton "comparer" dans la même rangée que le message; ou vous pouvez aller à ce lien:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie
3

Comment mettre à jour un référentiel GitHub avec des modifications depuis le référentiel en amont distant


Instructions de l'aide de GitHub:

Configuration d'une fourche distante

Synchroniser une fourchette


Instructions de configuration / utilisation:

Ouvrez Git Bash (Windows) ou un terminal Linux / Mac

Si vous n'avez pas encore cloné votre référentiel, vous devez accéder au répertoire de travail de votre dossier de développement et le cloner sur votre poste de travail.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Accédez au répertoire de travail de votre référentiel forké sur votre poste de travail.

$ cd /user/development/my_forked_repo/

Répertoriez le référentiel distant configuré actuel pour votre fork.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Spécifiez un nouveau référentiel en amont distant qui sera synchronisé avec le fork.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Vérifiez le nouveau référentiel en amont que vous avez spécifié pour votre branche.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Récupérez les branches et leurs commits respectifs dans le référentiel en amont. Les commits à maîtriser seront stockés dans une branche locale, en amont / maître.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Vérifiez la branche principale locale de votre fourche.

$ git checkout master

Switched to branch 'master'

Fusionner les modifications de l'amont / maître dans votre branche maître locale. Cela permet de synchroniser la branche principale de votre fork avec le référentiel en amont, sans perdre vos modifications locales.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Si votre branche locale n'a pas de commits uniques, Git effectuera une "avance rapide":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Vous devez maintenant pousser les commits vers votre fourche.

$ git push

Si vous n'êtes pas encore authentifié, il vous demandera votre nom d'utilisateur / mot de passe github. Une fois authentifiés, les nouveaux commits doivent être placés sur votre fork et visibles sur github.

ode2k
la source
5
Merci pour votre réponse détaillée, mais l’espoir était de trouver une solution utilisant l’interface Web.
Toby Allen