Git: dos subdirectorys, cómo extraer de diferentes twigs y empujar a una twig principal

He visto respuestas sobre cómo insert diferentes directorys en diferentes sucursales, cómo extraer / presionar desde diferentes repositorys para diferentes directorys, etc. Pero tengo un problema al combinar estas dos cosas.

Así que tengo un repository git en, digamos mydir /, y tiene dos subdirectorys:

1.) mydir / package 2.) mydir / foo.

El mydir / package es clonado de otro git repo, y lo he configurado para que se extraiga del repository de git original y lo lleve a uno personal. Estoy trabajando principalmente en la twig de desarrollo de este repository.

El directory mydir / foo es donde escribo el código personal. Tira y empuja solo al repository personal. Utiliza el código fuente en mydir / package, por lo que guardo estos directorys en un repository.

Cómo se ve ahora : está casi bien. Me muevo a la carpeta mydir / package, y puedo actualizar, presionar, arrastrar según sea necesario a las ubicaciones correctas (no a las twigs correctas, sino a los repositorys correctos). Lo mismo ocurre con mydir / foo.

Qué sale mal : si presiono desde mydir /, miro el repository personal, hay dos twigs; dominar y desarrollar

Maestro: el repository tiene una carpeta / foo, que está bien. Pero no hay carpeta / package

Desarrollar: el repository tiene todos los contenidos de / package. No hay carpeta / foo, no hay directory principal.

Por qué es un problema : he podido usar el control de fuente en todo, pero es molesto tener mis impulsos / cambios en los dos directorys en dos twigs separadas. Tengo que entrar en cada directory por separado y comprometer / agregar / presionar / etc., y luego cada uno de ellos va a diferentes twigs. Los files están respaldados, lo cual es bueno, pero no es práctico para el siguiente tipo que intente clonar mi repository.

Lo que quiero : casi todo lo relacionado con este repository funciona para mí, excepto para empujar desde mydir /. Quiero extraer de mydir / para extraer de mi repository personal (para que no actualice accidentalmente la carpeta mydir / package). Todavía quiero extraer desarrollo de mydir / package para extraer de la twig de desarrollo del package original. Solo quiero comprometer / agregar / presionar desde mydir para que signifique "actualizar la twig maestra del repository personal para que ahora contenga el estado actual de mydir / package y mydir / foo". Cuando miro este repository personal, quiero ver las dos carpetas en la twig principal.

Lo que probé-> qué sucedió : 1.) git push remote master (de la carpeta mydir / package).

Error! [rechazado] maestro -> error maestro (recuperar primero): error al presionar algunas references a 'mypersonalrepo.git'

2.) Solicitud de extracción en el repository personal para fusionar las twigs de desarrollo y maestro

La carpeta mydir tenía mydir / package (que todavía estaba en la twig de desarrollo y tenía todas mis modificaciones), mydir / foo (que estaba en la twig derecha) y luego todos los files de la twig principal del repository remoto.

3.) git agregar package / -> git push origen maestro

Nada ha cambiado. Las carpetas seguían siendo empujadas para separar las twigs del repository personal.

Como reference, esto es lo que parece si escribo git remote show origen de mydir / package, ¿quizás necesito crear un segundo repo remoto para hacer este tipo de personalización?

remote origin Fetch URL: their_package_repo.git Push URL: mypersonal_repo.git HEAD branch: master Remote branches: develop tracked master tracked some_other_branch tracked Local branches configunetworking for 'git pull': develop merges with remote develop master merges with remote master Local refs configunetworking for 'git push': develop pushes to develop (fast-forwardable) master pushes to master (local out of date) 

La respuesta directa es NO. No existe tal característica para tirar twigs por separado y empujar todas las carpetas desde las twigs a una twig.

  • Si la carpeta del package funciona como reference o código de biblioteca para la carpeta foo , debe administrarlos en la misma twig (como el master ).
  • Si la carpeta del package funciona por separado de la carpeta foo , debe administrarlos en diferentes twigs.

Por qué es imposible: cuando insertas la carpeta del package y la carpeta foo juntas en la twig master , eso significa que las dos carpetas se agregan al control de la versión por git en la twig master . Cuando otros desarrolladores clonan / extraen su repository personal, la carpeta del package y la carpeta foo se mostrarán en la twig master . Incluso a través de hay otras maneras de mostrar solo la carpeta foo en la twig master para otros desarrolladores ( git fetch y git checkout origin/master -- foo ), pero el directory de trabajo no es la versión como origin/master . Entonces, cuando los desarrolladores envían sus cambios locales a su repository personal, git los presionará para que tiren primero, y el package y la carpeta foo también se mostrarán en la twig master eventualmente.