¿Cómo pasar de un repository de git a otro?

Yo y un par de otros muchachos de un gran equipo estamos trabajando en una página separada del proyecto. Vamos a llamarlo página de grupos. Mientras trabajamos en la página de grupos, necesitamos intercambiar código incompleto, el código que no deseamos que se envíe al repository central. Y durante este time, también trabajamos en funciones que no están relacionadas con la página de grupos, pero sí debemos enviarlas y enviarlas al server central. Estoy buscando soluciones para este problema, estas son mis ideas. Por favor coméntalos.

No podemos hacer una sucursal en el server de reserva real debido a los altos mandos.

  1. Cree y envíe correos electrónicos diffs entre ellos, luego pierda los cambios y use el diff cuando necesitemos volver a la página de grupos. La persona que recibe los correos electrónicos aplica la diferencia. etc.
  2. Hacemos un cambio en nuestro código, lo cometemos, pero no lo presionemos. Entonces, quien necesite ese código incompleto, puede sacarnos directamente.
  3. Haz otro clon del server central con –bare flag. Entonces podemos tratarlo como un server local-central solo para la página de grupos. Podemos extraer de él y crear un espacio de trabajo separado para la página de grupos. Podemos empujar y tirar hacia ella.

Ahora cada uno de estos tiene problemas.

  1. es demasiado tedioso Quiero usar git para eso.
  2. Cuando alguien se aleja de mí, y luego trabaja en una nueva característica, y luego empuja (al server central), entonces lo que sea que él haya sacado de mí no llega al server. ¿Cómo podría finalmente enviarlo al server cuando nuestro código de página de grupos esté completo?
  3. El mismo problema. ¿Hay alguna manera de impulsar desde este server local-central al server principal? Ambos son repos sin cargo, por supuesto. ¿Hay alguna manera de pasar de un clon desnudo al repository principal de github?

3 es tu mejor opción. De hecho, así es como pretende ser Git; con repositorys para componentes individuales, que se alimentan en un repository más central cuando se realiza el trabajo.

No hay problema para impulsar los cambios de otra persona. Digamos que haces un cambio e introdúcelo en el repository de la página de grupos. Luego lo saco, hago algunos cambios y los empujo hacia atrás. Ahora decidimos que hemos terminado. Si presiono en el repository central, ese impulso includeá mis cambios y los cambios en los que se basaron mis cambios.

No necesita pasar de un repository simple a otro. Git funciona presionando desde su repository local, a uno o más repositorys remotos. Cuando clonas, hay un repository remoto pnetworkingeterminado llamado "origen". Pero puede tener tantos repos remotos configurados como desee. Para configurar esto, supongamos que ha clonado desde el repository central; eso se llama "origen". Ahora crea un repository ssh://some-machine.corp.com/path/to/groups-repo.git está en ssh://some-machine.corp.com/path/to/groups-repo.git . En su repository de trabajo local, simplemente haga git remote add groups ssh://some-machine.corp.com/path/to/groups-repo.git , y tendrá una reference a ese repository de grupos. Ahora puedes usar git fetch , git pull , git push etc. con groups y con origin .

Para hacerlo simple, Git es un sistema de control de versiones distribuidas . Esto significa que cada vez que clona de un repository, clona todo el repository. Y cada clon es completamente independiente. De hecho, lo que clonas en tu máquina es exactamente lo mismo que lo que está en el server, tu clon puede recibir push / pull, etc. (La única diferencia es que probablemente no permitas que nadie se conecte a través de ssh )

Entonces, cualquiera que sea el path que tome, si sus compañeros de trabajo se alejan de usted, pueden impulsar su compromiso con el repository principal. Lo mismo aplicará con la opción 3, use el server de git de su equipo, y cuando esté listo, algunos de ustedes lo conectarán a su máquina y lo enviarán desde allí al server principal.

Entonces, en tu caso, la opción 3 sería la más fácil. Aunque, una vez que ingresa al repository principal, este repository entregará todo el trabajo que haya realizado en su server privado. Entonces, ni siquiera estoy seguro de que sea realmente útil que tengas tu propio server (a less que quieras asegurarte de que nadie más toque tu twig "privada").

¿Hay alguna manera de pasar de un clon desnudo al repository principal de github?

Sí, no tiene que estar en un tree de trabajo para impulsar cambios desde un repository simple.

Simplemente ssh al lugar donde está 'maestro local' y ejecuta:

 git push origin master 

Como señala la otra respuesta, también puede enviar directamente desde su copy local a un maestro remoto, pero a veces es más conveniente tener un depósito de 'guardián' automatizado como este que se puede activar para enviar los cambios (por ejemplo, después de la revisión) a múltiples repositorys remotos a través de la automation, sin preocuparse por la configuration de keys ssh, etc., para que un individuo específico envíe los cambios.