usar tipos tener tag sirve repositorio remove qué proyecto podemos partir para otro oneline nuevo nuestros nos mayor log herramienta hacer hace existen etiquetas cuando crear creamos control git git-submodules

tipos - No se puede agregar el submódulo git cuando se especifica como una ruta relativa



¿qué hace git log-oneline? (3)

¿ ../extern/Lib1 refiere ../extern/Lib1 a un repositorio Git?
Si no lo hace, Git no sabría cómo tener la url de repo de Git en su .gitmodule
Intenta también:

  • con la lib destino no existente (incluso vacía)
  • con una ruta absoluta en lugar de una relativa (puede utilizar una relativa, pero en caso de que valga la pena intentarlo aquí)

Algunas buenas fuentes en submódulos son:

Como solo la ruta absoluta funciona aquí, significa que la ruta relativa necesita una referencia para comparar.
Esa referencia es el "origen remoto" que debería estar en su DirName/NewRepo_withSubmodules/.git/config , así:

$ cat .git/config ... [remote "origin"] url = /path/to/DirName/NewRepo_withSubmodules/.git fetch = +refs/heads/*:refs/remotes/origin/* ...

Si tiene esa sección en el archivo ../DirName/NewRepo_withSubmodules/.git/config , debería poder agregar ../Extern/Lib1 como un submódulo usando una ruta relativa.

Todo lo anterior está inspirado en la siguiente sección de la página de manual de submódulo de git:

<repository> es la URL del repositorio de origen del nuevo submódulo.
Esto puede ser una URL absoluta, o (si comienza con ./ o ../ ), la ubicación relativa al repositorio de origin del superproyecto .

Entonces, si NewRepo_withSubmodules es un repositorio de Git local que acaba de crearse (y no tiene, por supuesto, "origen"), debe definirse un "origen remoto" artificial (incluso si el origen apunta a sí mismo), aunque solo sea para permitir la URL relativa para otros repositorios de submódulos a utilizar.

Git 2.13 (Q2 2017) mejorará la detección del origen predeterminado de un submódulo.

Consulte la confirmación d1b3b81 (25 de febrero de 2017) por Stefan Beller ( stefanbeller ) .
(Combinado por Junio ​​C Hamano - gitster - in commit ae900eb , 10 de marzo de 2017)

submodule init : advierte sobre volver a un camino local

Como ahora documentado :

<repository> es la URL del repositorio de origen del nuevo submódulo.
Puede ser una URL absoluta, o (si comienza con ./ o ... ./ ), la ubicación relativa al repositorio remoto predeterminado del superproyecto
(Tenga en cuenta que para especificar un repositorio '' foo.git '' que se encuentra justo al lado de un superproyecto '' bar.git '', tendrá que usar '' ../foo.git '' en lugar de '' ./foo.git '' - como se podría esperar cuando se siguen las reglas para las URL relativas - porque la evaluación de las URL relativas en Git es idéntica a la de los directorios relativos).

El control remoto predeterminado es el control remoto de la rama de seguimiento remoto de la rama actual.
Si no existe tal rama de seguimiento remoto o si HEAD se desconecta, se asume que " origin " es el control remoto predeterminado.
Si el superproyecto no tiene un control remoto predeterminado configurado, el superproyecto es su propio flujo ascendente autorizado y el actual. el directorio de trabajo se usa en su lugar.

Estoy tratando de agregar un submódulo a mi repositorio git, y recibo este error a cambio:

remote origin does not have a url defined in .git/config

alguna idea sobre lo que esto podría ser? Intenté buscar en Google, pero solo aparece un vínculo vago.

Estoy haciendo esto:

git submodule add ../extern/Lib1 lib

Estoy esperando que esto cree un submódulo lib/Lib1
Soy consciente de que esto solo creará una referencia y que luego tengo que actualizar / iniciar (no es claro en esta parte, no he llegado tan lejos, estoy aprendiendo el comando del submódulo).


Estaba intentando lo mismo, y encontré que lo siguiente ''parece haber funcionado:

Tengo (en Windows):

D:/phd/analyses /analysis1/ #This is an existing repository /analysis2/ #another existing repository /analysis3.tex /analysis4.tex ... /analysisN.tex

analysis1.tex ... analysisN.tex contiene ideas en las que todavía no he trabajado (''stubs, say), y analysis1/ and analysis2/ son cosas en las que estoy trabajando (y de ahí tengo código, tex, ... en ellas) ) Una vez que empiece a trabajar en los otros análisis, se moverán a sus propias carpetas y, por lo tanto, a sus propios repositorios.

Lo que hice fue (en git bash en análisis):

git init git add *.tex git remote add self . git submodule add self:/analysis2/.git analysis2 git submodule add self:/analysis5/.git analysis5 git commit -m "Initial commit"

Esto parece haber funcionado.

D:/phd/analyses/.git/config parece que debería, y .gitmodules parece a:

[submodule "analysis2"] path = analysis2 url = self:analysis2/.git [submodule "analysis5"] path = analysis5 url = self:analysis5/.git

Un saludo, Simon Knapp


(He resumido la solución aquí. El crédito va a VonC).

En el repositorio que contiene (por ejemplo, que containing.git/ ), git interpreta las rutas relativas como relativas al origin remoto, que no está definido. Queremos que sea relativo al directorio containing.git/ , así que ejecute

git remote add origin ..

(No estoy seguro de por qué es .. lugar de ...)

Ahora puedes agregar el sub-módulo:

git submodule add ../extern/Lib1 lib