Sincronizzare una forcella
Il set up
Prima di poter eseguire la sincronizzazione, è necessario aggiungere un telecomando che punti al repository upstream. Potresti averlo fatto quando hai originariamente biforcato.
Suggerimento: la sincronizzazione del fork aggiorna solo la copia locale del repository; non aggiorna il tuo repository su 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)
sincronizzazione
Sono necessari due passaggi per sincronizzare il repository con l'upstream: prima devi recuperare dal telecomando, quindi unire il ramo desiderato nel tuo ramo locale.
Recupero
Il recupero dal repository remoto porterà nelle sue filiali e nei rispettivi commit. Questi sono memorizzati nel tuo repository locale sotto rami speciali.
$ 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
Ora abbiamo il ramo principale dell'upstream memorizzato in un ramo locale, upstream / master
$ 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
Fusione
Ora che abbiamo recuperato il repository upstream, vogliamo unire le sue modifiche nel nostro ramo locale. Questo porterà quel ramo in sincronia con l'upstream, senza perdere i nostri cambiamenti locali.
$ 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
Se la tua filiale locale non ha avuto alcun commit univoco, git eseguirà invece un "avanzamento rapido":
$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Suggerimento: se desideri aggiornare il tuo repository su GitHub, segui le istruzioni qui