2013-11-09 12 views
10

Ho biforcato un progetto github, quindi lo ho clonato localmente.git - aggiorna il master di fork e rebase il mio ramo su di esso?

Ho quindi apportato alcune modifiche in un nuovo ramo sul repository my_github/the_project.

Ho quindi aggiunto e impegnato le modifiche e inviato al mio repository github e inviato una richiesta di pull.

Il proprietario ha ricevuto la mia richiesta e vorrebbe che io "rebase on master" per ottenere le ultime modifiche. Come faccio a fare questo?

Inizialmente ho pensato che avrei potuto solo git fetch e rebase master da dentro il mio ramo corrente (come la maggior parte i messaggi che ho trovato consiglio ...), ma git fetch non hanno fatto nulla. Ora mi sono reso conto che è presumibile perché sto ancora recuperando dal clone my_ github/repo (è il mio nome in fondo ai telecomandi) che non ha ancora ricevuto le nuove modifiche nel master dal proprietario del github source.

Penso che quello che probabilmente ho bisogno di fare è di "refresh" mia forchetta in modo che il maestro di mia forcella è up-to-date e poi posso prendere che master e poi rebase a quel maestro?

Se questo è il caso, come posso eseguire l'aggiornamento del mio master forks? Se no, in che altro modo?

Devo aggiungere un telecomando per il repository originale a monte e utilizzarlo per rebase con (localmente)? È questo il metodo preferito?

risposta

10

Sì, non sta andando a prendere nulla per il motivo che hai ipotizzato. E sì, dovresti aggiungere un remoto per upstream localmente; farà una fusione veloce in avanti sul master.

git checkout master # Make sure you are in master 
git remote add author original_repo_that_you_forked_from 
    # Note: This is in the format [email protected]:authors_name/repo_name.git 
    #  Only needs definition once, future fetches then use it. 
git fetch author 
git status # make sure you are in the master branch for the following merge 
git merge author/master # i.e. 'into' your master branch 
git checkout your-branch 
git rebase master  # Now get those changes into your branch. 
git push origin your_branch # You can also use `-f` if necessary and `--all` 

(scusate, potrei non avere la sintassi esattamente a destra)

+0

Si potrebbe voler specificare la distanza nella spinta, come 'push origin git --all', ma per il resto che è esattamente quello che suggerirei – Leigh

+0

Da questo github [rebase e unire blog] (https://github.com/blog/2243-rebase-and-merge-pull-requests), possiamo dire che anche se il contributore non ha ridefinito la modifica, dovrebbe essere molto comodo per il _author_ per rebase e unire? Se questo è il caso, non capisco perché un PR è messo in attesa perché non è ribasato. – Felix

+0

Perché se ci sono conflitti, il manutentore non saprà necessariamente come risolverli. L'autore è nella posizione migliore per risolverli. –