Prima di tutto, non dovresti modificare il ramo locale master
, dovresti creare solo rami di funzionalità. Se si mantiene il vostro locale master
non modificato, quindi è possibile recuperare le ultime modifiche del pronti contro termine a monte:
git remote add upstream <url-for-upstream-repo>
git fetch upstream
Ora la filiale remota-tracking upstream/master
è sincronizzato con le ultime modifiche da upstream
. Opzionalmente, è possibile inoltre aggiornare il locale master
se si desidera:
git checkout master
git merge upstream/master
Ora è possibile creare funzionalità dirama di upstream/master
:
git checkout -b feature upstream/master
Quando si desidera sincronizzare i caratteristica rami con le ultime modifiche da upstream
, è possibile utilizzare rebase
, a condizione che nessun altro funzioni anche sul ramo della funzione (altrimenti finirai per forzare la risincronizzazione con la cronologia modificata). rebase
è in realtà l'ideale per questo flusso di lavoro, perché di solito si può usare per sincronizzare questi rami con la frequenza che si desidera, senza creare una storia disordinato, perché non creano merge impegna:
git fetch upstream
git checkout feature
git rebase upstream/master
Si potrebbe anche git merge upstream/master
invece di rebasing, ma ti lascerai dietro un commit di merge, quindi nel tempo creerai una storia più complicata unendola invece di ricomporre.
Quando si è pronti a inviare una richiesta di pull, è sufficiente premere il numero origin
ed effettuare la richiesta contro lo master
a monte.
Il poster originale chiede:
[I] s 'è un modo per creare una filiale nella mia forcella che è una replica perfetta del padrone di un altro telecomando?
Finché il locale master
non si è discostato da upstream/master
(che non dovrebbe, se hai fatto il tuo lavoro in questi rami invece che direttamente in master
), poi basta spingere il locale master
al tuo origin
:
git push origin master
In alternativa, è possibile utilizzare un refspec per spingere il telecomando-tracking ramo upstream/master
al origin/master
:
git push origin upstream/master:master
'git pull upstream master: upstream-master'? – Ryan