2012-06-28 26 views
39

Acabo de tropezar con algo peculiar hoy. Le pedí a un compañero de trabajo en mi trabajo de verano que me ayudara a configurar un nuevo repositorio de git remoto para mi código y había mucha confusión sobre lo que hizo y lo que yo quería hacer. Le pedí que enviara su configuración para poder ver el camino a su control remoto y descubrió que no tenía un control remoto. Cuando le pregunté acerca de esto explicó su flujo de trabajo de la siguiente manera:¿Cuál es la diferencia entre git push y git pull?

  1. Cambio localmente
  2. algo Commit
  3. Mover a dir remota
  4. git pull c: \ localdir

Así que en vez de empujar a un control remoto que constantemente sacaba de su repositorio local al de nuestro servidor. Tipo de trabajo al revés Cuando lo confronté sobre esto, él me preguntó cuál era la diferencia y no pude responderle, pero creo que hay algo correcto.

Así que mi pregunta para todos ustedes es: ¿Cuál es la diferencia entre empujar a un control remoto y extraer desde un control remoto?

+4

@Downvoters: Por favor, recuerde dejar saber por qué, para que las preguntas se puedan mejorar. – Zeemee

+2

tendió a downvote también ya que la pregunta ** suena ** ridícula pero en realidad no lo es! Votar ahora en su lugar. – eckes

+2

@Mulmoth exactamente. Har para saber lo que hice mal si alguien simplemente me patea en la cara por ello. =) – Qw4z1

Respuesta

10

Empujando a un control remoto: envíe algunos commits a otro repositorio de git. El repositorio git se considera "remoto", pero puede ser un repositorio en otra carpeta de tu disco duro. tirando de un control remoto: obtenga algunos commits desde un repositorio remoto y fusiónelos en su HEAD actual (su pago actual de su repositorio)

Su compañero de trabajo puede tener que usar pull en lugar de push porque su repositorio podría no estar disponible (no se ejecutó git daemon, o gitweb, o el servidor ssh), pero el suyo estaba disponible desde su computadora. Como es un servidor, puede que no quiera exponer un daemon/servicio git que podría ser un vector de ataque.

Pero si su repositorio fue compartida/disponible, sólo habría sido capaz de hacer:

  1. cambiar algo localmente
  2. cometer
  3. empuje a su repositorio
+1

Creo que este fue el caso, ya que también tuve problemas al presionar al servidor. – Qw4z1

+2

Entonces lo es. Y según lo informado por [eckes] (http://stackoverflow.com/a/11240793), el servidor puede tener un directorio desprotegido que refleje el maestro como una versión de producción. Por lo tanto, no podrá pasar de su sucursal local a la sucursal maestra remota, ya que está desprotegida para estar disponible para las necesidades de producción. – Dolanor

0

Ninguno, los repos son copias uno del otro y tirar y empujar son solo flujos de dirección. La diferencia con el método de su compañero de trabajo es que agregó un cuarto comando innecesario.

1

Sí, funciona hacia atrás.

flujo de trabajo Principio es:

  1. cambiar algo localmente
  2. cometer
  3. empuje para dir remota

Un caso de uso (el otro es explained by Dolanor) para no presionar a distancia es que una la copia de trabajo está marcada en el control remoto (es decir, no es un repositorio simple). Cuando quiere empujar una rama que está desprotegida en el cuadro de control remoto (por ejemplo, master:master), esto no tendrá éxito, ya que los empujones hacia las ramas de salida están prohibidos.

En mi opinión, ese es el único caso de uso para saltar a la máquina remota y tirar en lugar de empujar desde la máquina local.

+1

Expliqué el otro caso donde el repositorio no es viable (no git daemon, etc.). Me olvidé del repositorio ya desprotegido. Así que parece haber 2 casos para hacer ese tipo de flujo de trabajo – Dolanor

+0

@Dolanor: ¡tienes razón! Respuesta editada – eckes

+0

Así que, básicamente, empujar y tirar es simplemente lanzar confirmaciones en direcciones opuestas. – Qw4z1

13

En mi Ver puede permitir que los usuarios transfieran sus confirmaciones a algún repositorio que se considere como "el maestro", o les permite enviar solicitudes de extracción a un solo usuario que tenga permiso para modificar dicho "maestro".

Github, por ejemplo, no permitirá que los no contribuyentes ingresen al repositorio, pero les permitirá enviar solicitudes de extracción, para que los contribuyentes puedan integrar sus cambios.

+2

El ejemplo de solicitud de extracción de GitHub lo hace mucho más claro para mí. ¡Gracias! – Qw4z1

+0

Esta respuesta lo explica en términos simples, en lugar de introducir más términos nuevos para que el novato los "entienda". – NavkarJ

Cuestiones relacionadas