¿Por qué una 'solicitud de extracción' de git no se denomina 'solicitud de inserción'?

451

La terminología utilizada para fusionar una rama con un repositorio oficial es una 'solicitud de extracción'. Esto es confuso, ya que parece que estoy solicitando que envíe mis cambios al repositorio oficial.

¿Por qué se llama una solicitud de extracción y no una solicitud de inserción?

Alejandro Sanz Díaz
fuente
45
Imagina un árbol grande y vivo. El árbol es demasiado resistente para que puedas empujar una rama hacia adentro, en su lugar debes pedirle al árbol que tire de una rama hacia el tronco, fortaleciéndolo.
Luke
2
Si usa un repositorio remoto como gitihub, uno de los últimos comandos que ejecutará el encargado de cumplir la solicitud a través de la línea de comandos es git push. Para mí eso lo dice todo ... (sí, pueden emitir git pull, luego git push, pero el empuje fue solicitado y es lo que finalmente se está haciendo)
ebyrob
61
GitLab los llama merge requests. Mucho más claro, en mi humilde opinión. :)
U007D el
1
duplicado: stackoverflow.com/questions/14817051/…
Timothy Swan

Respuestas:

377

Si tiene un cambio de código en su repositorio y desea moverlo a un repositorio de destino, entonces:

  • "Push" es forzar los cambios que están presentes en el repositorio de destino ( git push).
  • "Pull" es el repositorio de destino que toma sus cambios para estar presente allí ( git pulldel otro repositorio).

Una "solicitud de extracción" es que solicita el repositorio de destino para obtener sus cambios.

Una "solicitud de inserción" sería el repositorio de destino que le solicita que envíe sus cambios.

Sven
fuente
21
Esto ha sido un problema para mí también con la convención de nomenclatura: D & u lo hizo mucho más fácil de entender. pensarlo es la misma forma en que funciona la compra / venta de divisas en los bancos.
nsuinteger
Creo que necesita redefinir su definición de "Pull", porque hay confusión sobre "repositorio de destino", "sus cambios". ¿Quizás quiera decir que "su repositorio de captura cambia del repositorio de destino"?
MrPisarik
99
La idea clave es que la terminología "push" / "pull" se utiliza para identificar a la parte que finalmente decide si la transferencia se realiza, no la parte que crea la información que se transfiere.
Jess Riedel
3
Depende de a quién solicite, si es su equipo una "solicitud de inserción" tiene más sentido, si es el repositorio remoto, tiene toda la razón.
A77
2
Cuando trabaje con un servidor Git central y privado en una empresa, por lo general podrá impulsar una nueva sucursal y solicitar una revisión de código y fusionarse con sus compañeros de trabajo. Entonces, "solicitud de extracción" para este flujo de trabajo no es técnicamente correcto, pero resultó ser el término elegido por todos y los diseñadores de GUI.
Sven
88

Cuando envía una solicitud de extracción, está solicitando (solicitando) al propietario del repositorio oficial que extraiga algunos cambios de su propio repositorio. Por lo tanto, "solicitud de extracción".

JB Nizet
fuente
2
pero el propietario emitirá una fusión git después de aprobarlo
Jervie Vitriolo
2
Un git pull es una combinación de captación y fusión, por lo que pull ya implica la fusión.
Xiong Chiamiov
37

tl; dr ya que no se me permite hacer un esfuerzo, simplemente haré una solicitud al propietario del repositorio para que decida retirar


¿Quién puede enviar código a un repositorio?

Si alguien (posiblemente malvado, inculto o desconocido) pudiera venir y decir aquí, simplemente envié esto a su rama maestra y estropeé todo su código ¡JAJAJA! ?

Seguramente no quieres que haga eso. De manera predeterminada, se establece una red de seguridad para que nadie pueda presionar a su repositorio. Usted puede configurar otros como colaborador , entonces pueden empujar. Le daría acceso a personas de su confianza.

Entonces, si no eres un colaborador e intentas impulsar, recibirás un error que indica que no tienes permiso.


Entonces, ¿cómo pueden otros desarrolladores presionar a un repositorio que no tienen permiso para presionar?
No puede dar acceso a todos, sin embargo, desea dar a otros un punto de salida / entrada para que puedan hacer 'una solicitud al propietario del repositorio para que extraiga este código en el repositorio'. En pocas palabras, haciendo que el repositorio sea accesible, pueden bifurcarlo ... hacer sus cambios en su propio tenedor. Empuje sus cambios a su propio tenedor . Una vez que esté en su en su propio repositorio remoto:

Realizan una solicitud de extracción desde su bifurcación y el propietario del repositorio ascendente (al que no puede presionar directamente) decidirá si fusiona o no la solicitud de extracción.


También una pregunta semi-relacionada que recomiendo leer ¿Qué sucede exactamente en un git push? ¿Por qué un impulso de git no se considera como una fusión de git?

Miel
fuente
44
Para las personas que no se dan cuenta de que hay una diferencia de permiso entre push y pull, esta respuesta tiene mucho sentido.
buddie
29

Solicitud de extracción : le solicito que extraiga la mía.

hepidad
fuente
77
Yo, como usuario, lo veo desde mi perspectiva, ¿no debería ser "solicito que se lo envíe?" I >>> You - Estás cambiando el punto de referencia dos veces en el mismo contexto ... en lugar de I >>>> You <<<< Mine
Marin
1
Esta respuesta tiene más sentido.
Shivams
Peezy fácil exprimido de limón
Ivan Ivković
Te pido que saques el mío ... ¿de dónde? ¿Entiendo que esto sería de una bifurcación del proyecto original? o de una copia local?
KansaiRobot
5

Quiero enviar algo al repositorio de otra persona.

No tengo permiso para empujar (o tirar, para el caso).

El propietario / colaboradores tiene permisos. Pueden tirar y empujar. No puedo empujar

Por lo tanto, les pido que realicen un tirón de mí, lo que indirectamente significa que les estoy pidiendo que acepten mi empuje.

Por lo tanto, no hay solicitud de empuje. Solo por un tirón. Y por la aceptación de un empujón.

Por lo tanto, una solicitud 'pull'. Y no una solicitud de "empuje".

usuario11705414
fuente
4

Es la palabra "Solicitud" que es clave en estas acciones. También podría pensar que dice "Tengo una solicitud para que acepte mi trabajo, ¿acepta?" - "Una solicitud de extracción".

Al principio es un poco confuso, pero finalmente tiene sentido.

Kyzer
fuente
1

Para entender esto mejor y recordarlo para siempre, debes imaginarlo.

Imagine un árbol grande y vivo {como su repositorio}. El árbol es demasiado resistente para que pueda insertar una rama o agregar una nueva parte en él {simboliza la creación de una nueva rama o usted insertando código en ella}, en su lugar, debe pedirle al árbol que tire de una rama en el tronco o que cambios de ti.

El término "solicitudes de extracción" proviene de la naturaleza distribuida. En lugar de simplemente insertar sus cambios en el repositorio (como lo haría con un repositorio centralizado, por ejemplo, con Subversion), está publicando sus cambios por separado y le pide al encargado que los incorpore. El mantenedor luego puede revisar los cambios y hacer dicha extracción.

Básicamente, básicamente "solicita" a los chicos con acceso de escritura al repositorio al que desea contribuir, que "tire" de su repositorio.

Las solicitudes de extracción le permiten informar a otros sobre los cambios que ha introducido en una rama en un repositorio en GitHub. Una vez que se abre una solicitud de extracción, puede analizar y revisar los posibles cambios con los colaboradores y agregar confirmaciones de seguimiento antes de que sus cambios se fusionen en la rama base. Explicación de Github

SPidey
fuente
0

Creo que es una terminología tonta porque quiero pensar que yo quiero empujar algo a usted y no pensando viceversa pide que alguien tire de la mina addings. Por lo tanto, debe cambiarse a PUSH REQ. ya que soy la parte activa La flecha va hacia el otro lado comenzando por mí y no por el Goofy en el otro extremo. EN MI HUMILDE OPINIÓN.

Michael Pauli
fuente
0

Piensa de esta manera. Repositorio local vs repositorio remoto.

  • Cuando empujas desde Local. ( git push) - en otras palabras, el repositorio remoto está extrayendo códigos de usted (local).

Estás pidiendo algo. Entonces, pregúntate a ti mismo,

  • ¿Desea repositorio remoto extrayendo códigos de usted? - Solicitud de extracción.
Jin Lim
fuente
Creo que es importante hacer la distinción de que no se pueden hacer solicitudes push. Si puede presionar y lo hace, no es una solicitud, se fusionará con el maestro. Una solicitud de extracción hacia un repositorio de git hub está solicitando que se fusione su código.
James
Solo uso esto como un ejemplo. Por supuesto, Github puede empujar el código. pero editaré mi respuesta.
Jin Lim
0

Me temo que la mayoría de estas respuestas abordan la pregunta ¿Qué significa 'solicitud de extracción'? o ¿Qué significaría "solicitud de inserción"? en lugar de la pregunta del OP: ¿Por qué se llama una solicitud de extracción y no una solicitud de inserción?

Normalmente, este tipo de reemplazo de preguntas es aceptable, pero en este caso está claro que el OP conoce las respuestas a estas preguntas de reemplazo, por lo que responderlas no es muy útil.

Solo las personas en GitHub que acuñaron el término lo saben con certeza. Sin embargo, parece evidente que esta elección terminológica refleja algo así como el siguiente punto de vista con respecto al fenómeno de "los cambios que llegan a un repositorio desde afuera": El responsable realiza la acción (pull) .

Sin embargo, una solicitud también es una acción, y quien realiza esa acción no es el responsable sino el remitente (que ha realizado aún más acciones, es decir, trabajo). Por lo tanto, el término 'solicitud de extracción' crea confusión sobre quién es el agente . En última instancia, la confusión surge debido a la naturaleza recursiva de una solicitud: una solicitud es tanto una acción de un agente primario como una solicitud de una acción futura de un segundo agente.

La situación es bastante análoga a las construcciones lingüísticas ahora comunes como "construimos nuestra casa" (utilizada en lugar de "le pagamos a alguien más para construir nuestra casa"), en la que la responsabilidad de la acción primaria se traslada del agente original obvio a un agente secundario que cumple un rol social gerencial.

Se podría concluir de esto que la razón de la elección terminológica es la legitimación del punto de vista de que el trabajo gerencial es trabajo de primera clase . Además, la razón de la confusión acerca de esta elección terminológica puede ser que los trabajadores no gerentes tienen naturalmente un punto de vista diferente.

jimmymathews
fuente