2010-02-04 28 views
10

Hace tiempo que utilizamos GIT internamente y tenemos un flujo de trabajo bastante bueno dentro de nuestro equipo. Ayer quisimos enviar algunas correcciones de errores a un proyecto en Github. Eso es algo nuevo para nosotros. Así que esto es lo que hicimos:Github, git, cómo enviar cambios a un repositorio upstream

  1. clonado su cesión temporal
  2. bifurcada aguas arriba
  3. Añadido nuestra tenedor como un control remoto
  4. han solucionado algunos errores en la rama principal
  5. Empujado maestro en nuestro tenedor remoto
  6. envió una solicitud de extracción
  7. Se detuvieron los cambios
  8. git fetch origen
  9. El maestro: git merge origen/maestra

Es esta la forma correcta de hacer las cosas? Terminamos con un mensaje adicional "Merge commit 'origin/master'" que otros desarrolladores no parecen obtener. También en el registro podemos ver nuestras confirmaciones dos veces.

Todo parece estar bien pero se siente mal. ¿Alguien sabe de alguna buena página de flujo de trabajo de github? Las páginas de ayuda de git parecen perder la parte de cómo hacer los cambios locales.

Me imagino que si hubiésemos retrocedido nuestra rama principal después de empujar los cambios a la horquilla, no tendríamos este problema, pero tampoco nos parece bien.

¡Cualquier ayuda sería muy apreciada!

Respuesta

8

Es de una sola manera.
Prefiero clonar my GitHub repo (el que bifurca un proyecto de GitHub "theirRepo"), en lugar de clonar directamente un "theirRepo".

Y yo recomendaría cambiar el rumbo de su rama principal en la parte superior de "theirRepo", en lugar de fusionar.
Creo que evitaría ver su confirmación dos veces en el registro y evitaría el mensaje de confirmación de "fusión" adicional.

  1. Tenedor theirRepo en myrepo
  2. clon myrepo
  3. Agregado "theirRepo" como un control remoto
  4. han solucionado algunos errores en la rama principal
  5. Empujado maestro en nuestro tenedor remota "myrepo"
  6. Enviado una solicitud de extracción
  7. Tiraron de los cambios
  8. git fetch theirRepo
  9. El maestro: git rebase theirRepo/master

Ver también diversas estrategias similares discutidas (por otro caso, pero que le puede dar algunas ideas) en esta cuestión de forma: How do I re-play my commits of a local git repo, on top of a project I forked on github.com?

+0

Gracias por su ayuda, lo agradecería muchísimo.Si rebase después de la búsqueda que deshaga mis commits, aplique sus commits (que ahora incluye los míos del pull) y vuelva a jugar el mío en la parte superior derecha. ¿Git reconoce el hecho de que las confirmaciones son las mismas o he olvidado algo aquí? – tsdbrown

+0

@tsdbrown Git debería detectar confirmaciones similares (mismo SHA1) – VonC

+0

Impresionante, esperaba que ese fuera el caso. Daré esto la próxima vez. – tsdbrown

Cuestiones relacionadas