Pregunta

Problema resuelto: para mostrar la dependencia externa de código por submódulos: Gracias a VonC !

Problema actual: para tener un submódulo sin contenido duplicado en dos carpetas

Una solución temporal al problema actual: para cambiar el nombre de la carpeta a bin-github, ya que el nombre de la carpeta como un submódulo es bin. Esto significa que necesito para duplicar contenidos en mi casa.

Mi carpeta INICIO depende de ~ / bin. Tengo archivos que se encuentran en casa en el repositorio Masi , mientras que en ~ / bin en el repositorio bin en Github. Mi estructura de la carpeta correspondiente en el hogar:

~
|-- [drwxr-xr-x] bin
    | -- fileA
    ` -- folderA
    ...

Me gustaría saber cómo mostrar maquillaje ~ / bin un submódulo de la Git en Masi .

¿Cómo puede hacer ~ / bin un submódulo de mi Git en ~ /?


# 3 Responder al comentario de VonC:

Mis .gitmodules

[submodule "bin"]   
         path = bin
         url = git://github.com/masi/bin.git

Siento que no necesito añadir más el submódulo de nuevo, ya lo tengo en mis .gitmodules.

corro

Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin 

# 2 Responder a la respuesta de VonC:

He cambiado mis .gitmodules a la siguiente de tal manera que no tengo una copia duplicada de que en mi casa.

[submodule "bin"]
    path = bin
    url = git://github.com/masi/bin.git

Esto parece ser una situación diferente ya que no puedo tirar de la -folder submódulo-bin similar a la anterior.

Me sale el siguiente ahora en un git-repo recién clonado

Sam master $ git submodule git init
error: pathspec 'git' did not match any file(s) known to git.
error: pathspec 'init' did not match any file(s) known to git.
Did you forget to 'git add'?                          # I am not sure what this means
Sam master $ git submodule foreach git pull
Sam master $ git submodule update

tengo el repositorio externo en mis .gitmodules. ¿Por qué se me pide que git add?


Responder a la respuesta de VonC:

corro

git submodule add git://github.com/masi/bin.git bin-github-copy

porque no puedo agregar una nueva operación con el mismo nombre que mi bin carpeta existente.

Mis .gitmodules es

[submodule "bin-github-copy"]
    path = bin-github-copy
    url = git://github.com/masi/bin.git

corro

git clone git://github.com/masi/Sam.git

Me aparece un -directory bin emty.

¿Cómo puedo obtener el contenido del depósito?

¿Fue útil?

Solución

En primer lugar, no se olvide que con Git, no se puede "añadir" un directorio, sólo el contenido de al menos un archivo dentro de ese directorio.

A continuación, usted tiene dos opciones:

  • submódulos , a fin de Masi para referirse una específica cometer de sus [files dentro de directorio bin a] almacenado en GitHub (o a la última confirmación de una rama, se almacena a GitHub)

  • de combinación subárbol , con el fin de mezclar los dos repositorios juntos y seguir más fácilmente modificaciones a los archivos dentro de bin directamente desde el repositorio Masi. Eso puede ser más simple en su escenario.

Consulte esta respuesta para más información sobre estas 2 estrategias.


En el camino submódulos, declarando el submódulo es sólo la mitad del trabajo. Usted todavía tiene que inicializar el submódulo primera vez por

git submodule git init

Es necesario entonces tiran de sus submódulos :

git submodule foreach git pull

y luego actualizar el submódulo

git submodule update

Vea también este ejemplo práctico con submódulos de Git, parte I y Git submódulos, parte II .

  

El archivo .gitmodules sólo almacena los caminos, pero la versión de la confirmación no se almacenan con el proyecto principal.
  He creado un proyecto href="https://github.com/danielmorrison/submodule_example/" en GitHub para demostrar lo que sucede. Específicamente mira este comprometerse, que añade el submódulo, para ver lo que está pasando:

+Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top