Para mostrar la dependencia código externo en Git por un submódulo
-
16-09-2019 - |
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?
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