sacar un repository remoto y empujar esos files

Estamos trabajando en un gran proyecto aquí en el trabajo con "packages" de funciones ( EDITAR : "package" es solo un término que usamos internamente para referirnos a un package de funcionalidad específico, y no está destinado a ser un término git) extendido en varios repositorys git diferentes. Me estoy preparando para enviar un lote de cambios en sentido ascendente para su revisión y testing, pero me he encontrado con un problema tratando de hacer que todo juegue muy bien.

Lo que he hecho hasta ahora es clone desde el repository que contiene el package de códigos en mi proyecto principal, que funciona en la medida en que lleva los files a donde deben ir. Sin embargo, cuando voy a add/commit y push , los files del repository "package" no van con él, presumiblemente porque son parte de un repository de git diferente al que estoy presionando.

Realmente no es una opción viable pedirle a todos los desarrolladores del equipo que tiren mi "package" cada vez que cambie (especialmente porque aún es un poco temprano en el ciclo de desarrollo y se ven muchas revisiones y refactorizaciones), y yo no Tampoco quiero copyr los files a mano cada vez que tengo que enviarlos. Preferiblemente, podría configurar las cosas para poder sacar de mi repository "package" en mi repository principal, y luego empujar los cambios como un todo.

¿Hay alguna manera de hacer lo que estoy buscando con git?

Tu descripción aún no está perfectamente clara para mí, pero parece que necesitarías usar un submodule , una combinación de subtree o un git subtree (una herramienta de "terceros").

Probablemente debería preguntar en torno a su proyecto para ver si hay planes establecidos sobre cómo manejar este tipo de situación. Es posible que alguien ya haya planeado cómo integrar el contenido de los repositorys "agrupados" en el rest del código en el repository "principal".


Los submodules son la forma estándar de publicar un enlace de un repository a otro (usando inputs de tree "gitlink" especiales y datos en el file .gitmodules ). El uso de submodules permite a otros usuarios restablecer la configuration de repository dentro del repository que (parece) creada localmente durante su desarrollo.
El uso de submodules requerirá algunos cambios de flujo de trabajo para cualquier otra persona que necesite acceder a ellos (es decir, la git submodule update (con --init la primera vez) para asegurarse de que tienen la confirmación correcta del compromiso del subrepository después de la actualización (por ejemplo, ingresar) Repositorio "principal").

Una fusión de subtree es una forma de incorporar directamente el contenido de una confirmación no relacionada (por ejemplo, desde el repository de una biblioteca) a un subtree (subdirectory) de su proyecto principal. Solo los usuarios que necesitan extraer (o expulsar) las actualizaciones del contenido bajo el subtree en realidad necesitan hacer algo diferente (por ejemplo, pueden usar git merge -s subtree para fusionarse en las actualizaciones del historial fuente). A algunas personas les desagradan las fusiones de subtreees porque incorporan ("contaminan") la historia del proyecto principal con una copy del historial del subtree.

La herramienta de git subtree (una herramienta de terceros) puede ayudar a administrar fusiones normales de subtreees. Por ejemplo, el subcommand git subtree split puede tomar confirmaciones hechas encima del historial del repository principal y reescribirlas para que aparezcan sobre el historial original del subtree. Esto facilita la realización de cambios "locales" en el contenido del subtree y luego los empuja hacia arriba. También tiene un modo --squash que ofrece gran parte del beneficio de una fusión normal de subtreees mientras que previene la "contaminación" de la historia.
El autor del git subtree de git subtree ha vinculado a un tutorial que parece bastante útil.

No estoy obteniendo una idea clara de lo que desea (¿el uso del package de palabras parece no estándar aquí?); Sin embargo,

  1. man git-remote podría ser lo que necesitas
  2. git push --mirror (quizás comenzando con un git clone --mirror
  3. Si quieres el inverso (rastrea todas las sucursales remotas en un repository local), mira mis adiciones recientes aquí: "fetch –all" en un repository de git bare no sincroniza las twigs locales con las remotas

Sí, puedes hacerlo usando bifurcación.

Aquí hay algunos tutoriales sobre cómo mover un repository y realizar las acciones básicas que necesita: http://help.github.com/fork-a-repo/ (Ayuda de GitHub)

Y aquí puede encontrar algo más acerca de los controles remotos (esta function se usa para trabajar con horquillas): http://help.github.com/remotes/