2013-02-11 12 views
48

Sono curioso di sapere perché GitHub chiama gli invii per unire "Richieste pull".Perché GitHub chiama invii stranieri, una "Richiesta pull"?

Dalla mia comprensione, git pull estrarrà tutte le modifiche, da un repository remoto, in un ramo di lavoro corrente. Quindi unire queste modifiche con FETCH_HEAD. (Git Pull)

Quindi dare un'occhiata a git push ... una spinta potrebbe effettivamente spingere le modifiche apportate a un repository. E non è quello che stai facendo con un repo Git? Invio di una "richiesta" per unire il tuo codice? Quindi, perché non si chiama una "richiesta push"?

risposta

57

Il termine "richieste pull" deriva dalla natura distribuita di quanti progetti open source si organizzano. Invece di spostare semplicemente le modifiche nel repository (ad esempio con un repository centralizzato, ad esempio con Subversion), si pubblicano le modifiche separatamente e si chiede al manutentore di di inserire le modifiche nel. Il maintainer può quindi controllare le modifiche e fare il pull.

+5

Quindi, in pratica, "chiedi" ai ragazzi con accesso in scrittura al repository che vuoi contribuire, a "Pull" dal tuo repository? –

+1

@bluesm È esattamente così :) – poke

+0

Grazie! Migliore spiegazione di sempre! Il termine "richiesta pull" è stato per me criptico, fino ad ora. –

4

Quando si invia la patch a qualcun altro, si desidera che tale persona a unisca la modifica nel proprio repository. Ora, un pull è un recupero e un'unione. Quindi, se quella persona tira il tuo cambiamento, anche lui l'avrà unito, che è quello che vuoi.

1

Quando si invia una richiesta di pull, si chiede al proprietario del repository di ritirare le modifiche nel proprio repository locale (cioè unirle). Poi quel repository sarà pubblicato (tramite git push) ad un repo pubblico, ma questo è implicito.

Non è possibile chiamare questa "richiesta push" perché nessuno preme le modifiche, le estraggono.

9

Una richiesta di pull è quando un contributore che non ha accesso push a un repository desidera inviare il codice per l'inclusione nel progetto. Ad esempio, se hai un progetto su github e sei l'unica persona con diritti di commit e voglio includere il codice nel tuo progetto, cosa devo fare?

forzerò il repository github e creerò una nuova filiale per il mio lavoro. Una volta che sarò soddisfatto dell'attuale implementazione, ti invierò una richiesta al mio dominio git pull nel tuo repository (poiché non ho i diritti per il push diretto). Quando fai git pull hai la possibilità di scegliere quale ramo estrarre e dove vuoi arrivare. Forse non vuoi entrare direttamente nel tuo ramo master ma in qualche altro ramo per esaminare il codice.

Il git book ha una bella sezione su diversi flussi di lavoro come questo.

1

È possibile eseguire il commit dei commit dal repository privato al repository pubblico. Tuttavia, non puoi forzare le modifiche sul repository di qualcun altro, quindi chiedi loro di estrarre dal tuo repository pubblico il loro.

Problemi correlati