Synchronisation d'une fourchette
La mise en place
Avant de pouvoir synchroniser, vous devez ajouter une télécommande qui pointe vers le référentiel en amont. Vous l'avez peut-être fait lors de votre fork d'origine.
Astuce: La synchronisation de votre fork met uniquement à jour votre copie locale du référentiel; il ne met pas à jour votre référentiel sur GitHub.
$ git remote -v
# List the current remotes
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
$ git remote add upstream https://github.com/otheruser/repo.git
# Set a new remote
$ git remote -v
# Verify new remote
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
upstream https://github.com/otheruser/repo.git (fetch)
upstream https://github.com/otheruser/repo.git (push)
Synchronisation
Il y a deux étapes requises pour synchroniser votre référentiel avec l'amont: vous devez d'abord extraire de la télécommande, puis vous devez fusionner la branche souhaitée dans votre branche locale.
Aller chercher
La récupération à partir du référentiel distant apportera ses branches et leurs validations respectives. Ceux-ci sont stockés dans votre référentiel local sous des branches spéciales.
$ git fetch upstream
# Grab the upstream remote's branches
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/otheruser/repo
* [new branch] master -> upstream/master
Nous avons maintenant la branche maître en amont stockée dans une branche locale, en amont / maître
$ git branch -va
# List all local and remote-tracking branches
* master a422352 My local commit
remotes/origin/HEAD -> origin/master
remotes/origin/master a422352 My local commit
remotes/upstream/master 5fdff0f Some upstream commit
Fusion
Maintenant que nous avons récupéré le référentiel en amont, nous voulons fusionner ses modifications dans notre branche locale. Cela permettra à cette branche de se synchroniser avec l'amont, sans perdre nos changements locaux.
$ git checkout master
# Check out our local master branch
Switched to branch 'master'
$ git merge upstream/master
# Merge upstream's master into our own
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 eu de commit unique, git effectuera à la place une "avance rapide":
$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Conseil: Si vous souhaitez mettre à jour votre référentiel sur GitHub, suivez les instructions ici